Rozszerzanie schematu
Rozszerzanie schematuRozszerzenia wyjścia

Rozszerzenia wyjścia

Specyfikacja GraphQL szczegółowo opisuje, jak powinna być formatowana odpowiedź, co obejmuje określenie, jakie wpisy najwyższego poziomu muszą być używane w zwracanej mapie: zapytane dane są dodawane pod wpisem data, a błędy pod wpisem errors.

Czasem jednak potrzebujemy przekazać dodatkowe informacje, takie jak logi, ostrzeżenia lub sugestie. Takie wpisy nie są objęte specyfikacją i nie wolno nam dodawać ich jako własnych wpisów najwyższego poziomu. Zamiast tego specyfikacja GraphQL udostępnia specjalne miejsce, które możemy wypełnić według własnego uznania, aby przekazać dowolne dane niestandardowe: wpis extensions na najwyższym poziomie.

Jak wyjaśniono w sekcji 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.

Funkcja "Proactive Feedback" Gato GraphQL wykorzystuje tę możliwość, aby rozszerzyć odpowiedź API GraphQL i oferować dodatkowe informacje:

  • Deprecations
  • Warnings

Możemy zatem dostarczać użytkownikom dodatkowe informacje, wskazując możliwe usprawnienia zapytania:

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