
Funzionalità:
Funzioni dello schema
Funzioni dello schema
Lo schema GraphQL è dotato di campi e direttive che espongono le funzionalità del linguaggio di programmazione PHP.
Campi di funzione
I campi di funzione sono Campi globali, pertanto vengono aggiunti a ogni singolo tipo nello schema GraphQL: in QueryRoot, ma anche in Post, User, ecc.
I campi di funzione sono utili per manipolare i dati una volta recuperati, consentendoci di trasformare il valore di un campo nel modo richiesto, e offrendoci potenti capacità di importazione/esportazione dei dati.
Ad esempio, pur disponendo di un campo Post.hasComments, potremmo aver bisogno del valore opposto. Invece di creare un nuovo campo Post.notHasComments (il che richiederebbe di modificare il codice PHP), possiamo usare la funzionalità Field to Input per passare il valore di hasComments in un campo not, calcolando così il nuovo valore direttamente all'interno della query GraphQL:
query {
posts {
id
hasComments
notHasComments: _not(value: $__hasComments)
}
}Direttive di funzione
Lo schema GraphQL è dotato di direttive che espongono funzionalità comunemente presenti nei linguaggi di programmazione (come PHP).
I campi di direttiva sono utili per manipolare i dati una volta recuperati, consentendoci di trasformare il valore di un campo nel modo richiesto, e offrendoci potenti capacità di importazione/esportazione dei dati.
Ad esempio, questa query:
query {
posts {
title @strUpperCase
}
}...produrrà questa risposta:
{
"data": {
"posts": [
{
"title": "HELLO WORLD!"
},
{
"title": "LOVELY WEATHER"
}
]
}
}Campi ausiliari
Allo schema GraphQL vengono aggiunti campi che forniscono funzionalità ausiliarie di uso comune.
I campi ausiliari sono Campi globali, pertanto vengono aggiunti a ogni singolo tipo nello schema GraphQL: in QueryRoot, ma anche in Post, User, ecc.
In questa query, recuperiamo gli ID degli utenti del sito ed eseguiamo una nuova query GraphQL passando il loro ID come parametro:
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
}
}
}Campi di ambiente
Lo schema GraphQL è dotato del campo globale _env, che consente di ottenere un valore da una variabile d'ambiente, o da una costante PHP (definita più comunemente in wp-config.php, ma che può essere definita anche altrove).
Questa query recupera la costante d'ambiente GITHUB_ACCESS_TOKEN che potremmo configurare per accedere a un repository privato su GitHub:
query {
githubAccessToken: _env(name: "GITHUB_ACCESS_TOKEN")
}