Extensions de sortie
La spécification GraphQL décrit en détail comment la réponse doit être formatée, ce qui implique de définir quelles entrées de niveau supérieur doivent être utilisées dans la carte retournée : les données interrogées sont ajoutées sous l'entrée data, et les erreurs sous l'entrée errors.
Mais parfois nous avons besoin d'émettre des informations supplémentaires, telles que des logs, des warnings ou des suggestions. Ces entrées ne sont pas couvertes par la spécification, et il nous est interdit de les ajouter sous leur propre entrée de niveau supérieur. À la place, la spécification GraphQL fournit un emplacement spécial que nous pouvons remplir comme bon nous semble, pour transmettre toutes les données personnalisées que nous souhaitons : l'entrée extensions de niveau supérieur.
Comme expliqué dans la section Response Format :
The response map may also contain an entry with key
extensions. This entry, if set, must have a map as its value. This entry is reserved for implementors to extend the protocol however they see fit, and hence there are no additional restrictions on its contents.
La fonctionnalité « Proactive Feedback » de Gato GraphQL utilise cette capacité pour étendre la réponse de l'API GraphQL afin d'offrir des informations supplémentaires :
- Deprecations
- Warnings
Nous pouvons ainsi fournir des informations supplémentaires à nos utilisateurs, pour indiquer des améliorations potentielles à la requête :
{
"extensions": {
"warnings": [
{
"message": "Dynamic variable with name 'props' had already been set, had its value overridden",
"locations": [
{
"line": 4,
"column": 25
}
]
}
]
},
"data": {
"posts": {
"excerpt": "Hello world!",
"Content": "<p>Hello world!</p>"
}
}
}