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.
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ć
- Wklej schemat SDL do edytora schematów GraphQL.
- Poczekaj na JSON w panelu Introspekcja JSON; nawet schemat jednopolowy generuje około tysiąca linii.
- 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.