
Fitur:
Fungsi Skema
Fungsi Skema
Skema GraphQL dilengkapi dengan field dan direktif yang mengekspos fungsionalitas dari bahasa pemrograman PHP.
Field Fungsi
Field fungsi adalah Field Global, sehingga ditambahkan ke setiap tipe dalam skema GraphQL: di QueryRoot, tetapi juga di Post, User, dan lainnya.
Field fungsi berguna untuk memanipulasi data setelah diambil, memungkinkan kita mentransformasi nilai field sesuai kebutuhan, dan memberikan kemampuan impor/ekspor data yang andal.
Misalnya, meskipun kita memiliki field Post.hasComments, kita mungkin membutuhkan nilai kebalikannya. Alih-alih membuat field baru Post.notHasComments (yang memerlukan pengeditan kode PHP), kita dapat menggunakan fitur Field to Input untuk meneruskan nilai dari hasComments ke field not, sehingga menghitung nilai baru selalu di dalam query GraphQL:
query {
posts {
id
hasComments
notHasComments: _not(value: $__hasComments)
}
}Direktif Fungsi
Skema GraphQL dilengkapi dengan direktif yang mengekspos fungsionalitas yang umum ditemukan dalam bahasa pemrograman (seperti PHP).
Direktif field berguna untuk memanipulasi data setelah diambil, memungkinkan kita mentransformasi nilai field sesuai kebutuhan, dan memberikan kemampuan impor/ekspor data yang andal.
Misalnya, query ini:
query {
posts {
title @strUpperCase
}
}...akan menghasilkan respons ini:
{
"data": {
"posts": [
{
"title": "HELLO WORLD!"
},
{
"title": "LOVELY WEATHER"
}
]
}
}Field Pembantu
Skema GraphQL ditambahkan field yang menyediakan fungsionalitas pembantu yang umum digunakan.
Field pembantu adalah Field Global, sehingga ditambahkan ke setiap tipe dalam skema GraphQL: di QueryRoot, tetapi juga di Post, User, dan lainnya.
Dalam query ini, kita mengambil ID pengguna di situs web dan menjalankan query GraphQL baru dengan meneruskan ID mereka sebagai parameter:
query {
users {
userID: id
url: _urlAddParams(
url: "https://somewebsite/endpoint/user-data",
params: {
userID: $__userID
}
)
headers: _httpRequestHeaders
headerNameValueEntryList: _objectConvertToNameValueEntryList(
object: $__headers
)
_sendHTTPRequest(input: {
url: $__url
options: {
headers: $__headerNameValueEntryList
}
}) {
statusCode
contentType
body
}
}
}Field Lingkungan
Skema GraphQL dilengkapi dengan field global _env, yang memungkinkan untuk mendapatkan nilai dari variabel lingkungan, atau dari konstanta PHP (yang paling umum didefinisikan di wp-config.php, tetapi juga dapat didefinisikan di tempat lain).
Query ini mengambil konstanta lingkungan GITHUB_ACCESS_TOKEN yang mungkin kita siapkan untuk mengakses repositori privat di GitHub:
query {
githubAccessToken: _env(name: "GITHUB_ACCESS_TOKEN")
}