Extensões de saída
A especificação GraphQL descreve em detalhes como a resposta deve ser formatada, o que envolve definir quais entradas de nível superior devem ser usadas no mapa retornado: os dados consultados são adicionados sob a entrada data, e os erros sob a entrada errors.
Mas às vezes precisamos emitir informações adicionais, como logs, warnings ou sugestões. Essas entradas não são cobertas pela especificação, e nos é vedado adicioná-las sob sua própria entrada de nível superior. Em vez disso, a especificação GraphQL fornece um local especial que podemos preencher como quisermos, para transmitir qualquer dado personalizado que desejarmos: a entrada extensions de nível superior.
Como explicado na seção 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.
A funcionalidade "Proactive Feedback" do Gato GraphQL utiliza essa capacidade para estender a resposta da API GraphQL e oferecer informações adicionais:
- Deprecations
- Warnings
Podemos então fornecer informações adicionais aos nossos usuários, para indicar possíveis melhorias na query:
{
"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>"
}
}
}