Schema-Erweiterung
Schema-ErweiterungAusgabe-Erweiterungen

Ausgabe-Erweiterungen

Die GraphQL-Spezifikation beschreibt im Detail, wie die Antwort formatiert sein muss, was die Definition der Top-Level-Einträge in der zurückgegebenen Map umfasst: Die abgefragten Daten werden unter dem Eintrag data hinzugefügt und die Fehler unter dem Eintrag errors.

Manchmal brauchen wir jedoch zusätzliche Informationen, wie Logs, Warnings oder Vorschläge. Diese Einträge sind nicht in der Spezifikation abgedeckt, und es ist uns verboten, sie unter einem eigenen Top-Level-Eintrag hinzuzufügen. Stattdessen stellt die GraphQL-Spezifikation einen speziellen Ort bereit, den wir nach Belieben befüllen können, um beliebige benutzerdefinierte Daten zu übergeben: den Top-Level-Eintrag extensions.

Wie im Abschnitt Response Format erklärt:

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.

Die „Proactive Feedback"-Funktion von Gato GraphQL nutzt diese Möglichkeit, um die Antwort der GraphQL-API zu erweitern und zusätzliche Informationen bereitzustellen:

  • Deprecations
  • Warnings

So können wir unseren Nutzern zusätzliche Informationen bereitstellen, um auf mögliche Verbesserungen an der query hinzuweisen:

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