Przejdź do treści

Introspekcja JSON z GraphQL — Numio

Konwertuje GraphQL SDL na wynik JSON standardowego zapytania introspekcji przy użyciu @graphql-codegen/introspection. Dane wyjściowe zawierają obiekt __schema najwyższego poziomu z typami głównymi, każdym typem, w tym wbudowanymi, i dyrektywami.

Tworzenie pliku schema.json dla narzędzi oczekujących introspekcji JSON zamiast SDL, takich jak niektóre wtyczki IDE i generatory klientów.

GraphQL Schema

Introspection JSON

Kiedy go używać

  • Tworzenie pliku schema.json dla narzędzi oczekujących introspekcji JSON zamiast SDL, takich jak niektóre wtyczki IDE i generatory klientów.
  • Sprawdzanie, jak typ pola jest opakowany w rodzaje NON_NULL i LIST w danych introspekcji.

Jak używać

  1. Wklej schemat SDL do edytora schematów GraphQL.
  2. Poczekaj na JSON w panelu Introspekcja JSON; nawet schemat jednopolowy generuje około tysiąca linii.
  3. Skopiuj lub pobierz plik JSON i zapisz go, na przykład jako schema.json.

Schemat GraphQL

type Query {
  hello(name: String): String!
}

Introspekcja JSON

{
  "__schema": {
    "queryType": {
      "name": "Query"
    },
    "mutationType": null,
    "subscriptionType": null,
    "types": [
      {
        "kind": "OBJECT",
        "name": "Query",
        "description": null,
        "fields": [
          {
            "name": "hello",
            "description": null,
            "args": [
              {
                "name": "name",
                "description": null,
                "type": {
                  "kind": "SCALAR",
                  "name": "String",
                  "ofType": null
…

Szczegóły i ograniczenia

Wbudowane skalary (String, Boolean), typy introspekcji (__Schema, __Type, __Field i inne) oraz wbudowane dyrektywy (include, skip, przestarzałe, specifiedBy) są zawsze uwzględniane.

JSON nie jest otoczony kluczem "data"; zaczyna się bezpośrednio od __schema.

Konwersja przebiega w środowisku roboczym sieciowym w przeglądarce. Ta strona zawiera tylko schemat; nie wysyła zapytań do aktywnego punktu końcowego.

FAQ

Czy mogę uzyskać introspekcję JSON z URL?

Nie. Strona konwertuje wklejony SDL; nie wysyła zapytań introspekcji do serwera. Najpierw wyeksportuj SDL ze swojego serwera, a następnie wklej go tutaj.

Czy przestarzałe pola są uwzględnione?

Tak. Każde pole i wartość enum są wymieniane z isDeprecated i deprecationReason, dlatego pola oznaczone @deprecated mają isDeprecated: true.

Dlaczego wynik jest tak duży dla małego schematu?

Wyniki introspekcji opisują cały system typów, w tym wbudowane skalary, metatypy introspekcji i definicje dyrektyw, a nie tylko własne typy.

Specyfikacje i referencje