Estensione dello schema
Estensione dello schemaEstensioni di output

Estensioni di output

La specifica GraphQL descrive in dettaglio come deve essere formattata la risposta, il che implica definire quali voci di livello superiore devono essere utilizzate nella mappa restituita: i dati interrogati vengono aggiunti sotto la voce data, e gli errori sotto la voce errors.

Ma a volte abbiamo bisogno di emettere informazioni aggiuntive, come log, warning o suggerimenti. Queste voci non sono coperte dalla specifica, e ci è vietato aggiungerle sotto una loro propria voce di livello superiore. Al suo posto, la specifica GraphQL fornisce una posizione speciale che possiamo riempire come riteniamo opportuno, per trasmettere qualsiasi dato personalizzato desideriamo: la voce extensions di livello superiore.

Come spiegato nella sezione 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 funzionalità "Proactive Feedback" di Gato GraphQL utilizza questa capacità per estendere la risposta dell'API GraphQL al fine di offrire informazioni aggiuntive:

  • Deprecations
  • Warnings

Possiamo così fornire informazioni aggiuntive ai nostri utenti, per indicare potenziali miglioramenti alla 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>"
    }
  }
}