Ampliación del esquema
Ampliación del esquemaExtensiones de salida

Extensiones de salida

La especificación de GraphQL describe en detalle cómo debe formatearse la respuesta, lo que implica definir qué entradas de nivel superior deben usarse en el mapa devuelto: los datos consultados se añaden bajo la entrada data, y los errores bajo la entrada errors.

Pero a veces necesitamos emitir información adicional, como logs, warnings o sugerencias. Estas entradas no están cubiertas por la especificación, y se nos prohíbe añadirlas bajo su propia entrada de nivel superior. En su lugar, la especificación de GraphQL proporciona una ubicación especial que podemos rellenar como deseemos, para pasar cualquier dato personalizado que queramos: la entrada extensions de nivel superior.

Como se explica en la sección 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 característica "Proactive Feedback" de Gato GraphQL hace uso de esta capacidad para extender la respuesta de la API GraphQL para ofrecer información adicional:

  • Deprecations
  • Warnings

Podemos entonces proporcionar información adicional a nuestros usuarios, para indicar posibles mejoras a la consulta:

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