
Fonctionnalité :
Fonctions du schéma
Fonctions du schéma
Le schéma GraphQL est doté de champs et de directives qui exposent des fonctionnalités du langage de programmation PHP.
Champs de fonction
Les champs de fonction sont des champs globaux, ils sont donc ajoutés à chaque type du schéma GraphQL : dans QueryRoot, mais aussi dans Post, User, etc.
Les champs de fonction sont utiles pour manipuler les données une fois récupérées, nous permettant de transformer la valeur d'un champ de la manière requise, et nous offrant de puissantes capacités d'import/export de données.
Par exemple, bien que nous ayons un champ Post.hasComments, nous pouvons avoir besoin de la valeur opposée. Plutôt que de créer un nouveau champ Post.notHasComments (ce qui nécessiterait de modifier du code PHP), nous pouvons utiliser la fonctionnalité Field to Input pour passer la valeur de hasComments dans un champ not, calculant ainsi la nouvelle valeur directement dans la requête GraphQL :
query {
posts {
id
hasComments
notHasComments: _not(value: $__hasComments)
}
}Directives de fonction
Le schéma GraphQL est doté de directives qui exposent des fonctionnalités couramment présentes dans les langages de programmation (comme PHP).
Les champs de directive sont utiles pour manipuler les données une fois récupérées, nous permettant de transformer la valeur d'un champ de la manière requise, et nous offrant de puissantes capacités d'import/export de données.
Par exemple, cette requête :
query {
posts {
title @strUpperCase
}
}...produira cette réponse :
{
"data": {
"posts": [
{
"title": "HELLO WORLD!"
},
{
"title": "LOVELY WEATHER"
}
]
}
}Champs auxiliaires
Le schéma GraphQL est enrichi de champs qui fournissent des fonctionnalités auxiliaires couramment utilisées.
Les champs auxiliaires sont des champs globaux, ils sont donc ajoutés à chaque type du schéma GraphQL : dans QueryRoot, mais aussi dans Post, User, etc.
Dans cette requête, nous récupérons les IDs des utilisateurs du site et exécutons une nouvelle requête GraphQL en passant leur ID comme paramètre :
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
}
}
}Champs d'environnement
Le schéma GraphQL est doté du champ global _env, qui permet d'obtenir la valeur d'une variable d'environnement, ou d'une constante PHP (le plus souvent définie dans wp-config.php, mais pouvant également être définie ailleurs).
Cette requête récupère la constante d'environnement GITHUB_ACCESS_TOKEN que nous pourrions configurer pour accéder à un dépôt privé sur GitHub :
query {
githubAccessToken: _env(name: "GITHUB_ACCESS_TOKEN")
}