Uitvoer-extensies
De GraphQL-specificatie beschrijft in detail hoe de respons moet worden opgemaakt, inclusief welke entries op het hoogste niveau in de teruggegeven map aanwezig moeten zijn: de opgevraagde data wordt toegevoegd onder entry data, en de fouten onder entry errors.
Soms moeten we echter aanvullende informatie meegeven, zoals logs, waarschuwingen of suggesties. Deze entries worden niet gedekt door de specificatie, en het is ons niet toegestaan ze als eigen entries op het hoogste niveau toe te voegen. In plaats daarvan biedt de GraphQL-specificatie een speciale locatie die we naar eigen inzicht kunnen invullen om willekeurige aangepaste data door te sturen: de extensions-entry op het hoogste niveau.
Zoals uitgelegd in de Response Format-sectie:
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.
De "Proactive Feedback"-functie van Gato GraphQL maakt gebruik van deze mogelijkheid om de respons van de GraphQL API uit te breiden met aanvullende informatie:
- Deprecations
- Warnings
We kunnen onze gebruikers zo aanvullende informatie bieden om mogelijke verbeteringen aan de query aan te geven:
{
"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>"
}
}
}