Aumento de schema
Aumento de schemaExtensões de saída

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>"
    }
  }
}