Aller au contenu

Variables

Pour éviter de coder en dur toutes les valeurs lors de l’utilisation de GraphQL, l’API Explorer fournit une section Variables dans laquelle un objet JSON peut être ajouté. Les clés de niveau supérieur de l’objet JSON sont rendues disponibles en tant que variables dont les noms sont indiqués par un signe dollar ($KEY_NAME). Cela permet une expérience de développement beaucoup plus agréable lors de l’écriture et du test de requêtes, mutations et abonnements dynamiques.

query MyQuery1 ($domain: String) {
students(
filter: {
email: {
contains: $domain
}
}
) {
items {
id
firstName
email
}
}
}
{
"domain": "example.com"
}

alt text

Certaines entrées dynamiques peuvent devoir être ajoutées lorsque vous envoyez une demande à votre serveur GraphQL, tandis que le document d’opération reste le même. Ce sont les variables de votre opération. Les variables doivent être des arguments typés qui sont déclarés sur l’opération GraphQL. Parce que GraphQL est typé statiquement, le fait de passer les bonnes variables peut être validé pour vous.

Les deux exemples suivants fonctionneraient ensemble pour interroger une liste d’utilisateurs avec le statut “Actif” et dont les noms commencent par “M”.

query MyQuery1($name_start: String, $status: Boolean) {
students(
filter: {
firstName: {
starts_with: $name_start
},
isActive: {
equals: $status
}
}
) {
items {
id
firstName
email
}
}
}
{
"name_start": "M",
"status": true
}

alt text

Les variables ne se limitent pas à être des valeurs d’entrée uniques. Elles peuvent être des objets complexes avec n’importe quel type déclaré dans un espace de travail donné - natif ou personnalisé. Cela permet de passer dynamiquement des éléments tels que des filtres entiers, des tris et bien d’autres comme variables.

query MyQuery (
$filter: StudentsFilter
$first: Int
$orderBy: StudentsOrderBy
) {
students(
filter: $filter
first: $first
orderBy: $orderBy
) {
count
items {
id
firstName
lastName
age
}
}
}
{
"filter": {
"email": { "contains": "example" },
"firstName": { "starts_with": "M" }
},
"orderBy": { "lastName": "ASC"},
"first": 2
}

alt text