DokumentyObrazyMediaNarzędzia PDF

Konwertuj JSON na Schema GraphQL Online

Generuj schematy GraphQL z JSON automatycznie, bezpośrednio w przeglądarce.

Processed in your browser

JSON na schemat GraphQL

Kompatybilny z Apollo Server

Schemat gotowy do użycia w Apollo Server, GraphQL Yoga, Pothos, Nexus lub dowolnej implementacji GraphQL.

100% prywatne

Twój JSON z API jest przetwarzany wyłącznie w Twojej przeglądarce. Wrażliwe struktury danych nigdy nie opuszczają Twojego urządzenia.

Poprawne typy

Wykrywa String, Int, Float, Boolean, ID. Zagnieżdżone obiekty generują własne typy. Tablice jako listy [Type].

Natychmiast

Schemat GraphQL gotowy w milisekundach. Bez rejestracji, bez czekania, bez limitów.

Trzy kroki, żadnych komplikacji

1

Wklej swój JSON

Wklej dowolny obiekt JSON. Narzędzie analizuje strukturę i generuje odpowiadające typy GraphQL.

2

Wygenerowany schemat GraphQL

Otrzymujesz typy GraphQL ze wszystkimi polami poprawnie otypowanymi: String, Int, Float, Boolean i ID. Zagnieżdżone obiekty generują własne typy.

3

Skopiuj i użyj w Apollo Server

Skopiuj schemat i wklej do swojego serwera GraphQL (Apollo Server, GraphQL Yoga, Pothos) jako punkt startowy.

Masz pytania?

GraphQL to język zapytań dla API opracowany przez Facebook (obecnie Meta) w 2012 do użytku wewnętrznego i opublikowany jako specyfikacja open-source w 2015. Powstał, by rozwiązać ograniczenia REST w aplikacjach mobilnych: over-fetching (pobieranie więcej danych niż potrzeba), under-fetching (konieczność wykonywania wielu żądań) i brak typowanego kontraktu. Pierwsza implementacja była w kliencie iOS Facebooka. Dziś GraphQL używają GitHub, Twitter, Shopify, Airbnb, Pinterest i tysiące firm. Specyfikacją zarządza GraphQL Foundation (część Linux Foundation).

W GraphQL type definiuje strukturę danych, które serwer może zwracać (w zapytaniach i mutacjach), a input definiuje strukturę danych, które klient może wysyłać (argumenty mutacji). Na przykład type User { id: ID!, name: String!, email: String! } definiuje zwracalny obiekt User, podczas gdy input CreateUserInput { name: String!, email: String! } definiuje pola akceptowane przez mutację createUser. Typy mogą mieć resolwery dynamicznie obliczające pola; inputy to proste kontenery danych. Narzędzie generuje typy do modelowania istniejących odpowiedzi JSON.

GraphQL definiuje 5 prymitywnych typów skalarnych w specyfikacji: String (tekst UTF-8), Int (32-bitowa liczba całkowita ze znakiem), Float (dziesiętna podwójnej precyzji), Boolean (true/false) i ID (unikalny identyfikator, reprezentowany jako String lub Int). Serwery GraphQL mogą definiować dodatkowe skalary niestandardowe: Date, DateTime, URL, Email, JSON, UUID itp. Przykładowo pakiet graphql-scalars (dla Node.js) oferuje ponad 50 skalarów niestandardowych. Narzędzie używa 5 standardowych skalarów dla maksymalnej kompatybilności.

W GraphQL każdy zagnieżdżony obiekt w JSON staje się osobnym typem. Jeśli JSON zawiera {"order": {"product": {"id": 1, "name": "Widget"}}}, generowane są: type RootType { order: Order }, type Order { product: Product }, type Product { id: Int, name: String }. Odzwierciedla to naturę schematu GraphQL: wszystkie typy są nazwane i wielokrotnego użytku. Ten sam typ Product mógłby pojawić się w wielu typach nadrzędnych. Tablice obiektów są reprezentowane jako [Product] (lista Product).

Resolwer to funkcja, która wie, jak pobrać dane dla określonego pola schematu. W Apollo Server każde pole każdego typu może mieć resolwer. Jeśli nie jest zdefiniowany, Apollo używa DefaultFieldResolver, który po prostu zwraca właściwość o tej samej nazwie z obiektu nadrzędnego. Resolwery pozwalają na pobieranie danych z wielu źródeł: bazy danych, innego API, pamięci podręcznej lub obliczenia w czasie rzeczywistym. Schemat GraphQL (wygenerowany przez to narzędzie) definiuje kontrakt; resolwery implementują sposób jego spełnienia.

Adopcja GraphQL, Apollo Server, schema-first kontra code-first i migracja z REST na GraphQL

GraphQL został opublikowany jako open-source przez Facebook w lipcu 2015 i szybko wygenerował tętniący życiem ekosystem. Apollo GraphQL (założony w 2016) stworzył Apollo Server i Apollo Client, stając się implementacją referencyjną. W 2018 GitHub przeniósł swoje publiczne API z REST v3 na GraphQL v4 — kamień milowy potwierdzający GraphQL dla produkcyjnych API na dużą skalę. GraphQL Foundation powstała w 2019 pod auspicjami Linux Foundation w celu standaryzacji specyfikacji. W 2024 GraphQL jest drugą po REST najczęściej stosowaną specyfikacją API, obecną w większości startupów i wielu firmach z listy Fortune 500.

Istnieją dwa główne podejścia do budowania API GraphQL: schema-first i code-first. W schema-first najpierw definiujesz schemat SDL (Schema Definition Language), a potem implementujesz resolwery. To oryginalne i najbardziej przejrzyste podejście: kontrakt API jest widoczny i edytowalny jako tekst. W code-first definiujesz schemat przez kod (TypeScript w przypadku Nexus lub Pothos): typy są definiowane jako obiekty JavaScript/TypeScript, a schemat SDL jest generowany automatycznie. Code-first jest preferowany gdy poszukuje się end-to-end type-safety z TypeScript. To narzędzie generuje SDL (schema-first).

Migracja z REST na GraphQL to stopniowy proces, do którego wiele firm podchodzi wzorcem BFF (Backend For Frontend): zamiast zastępować istniejące API REST, dodawana jest warstwa GraphQL agregująca wiele endpointów REST. Ten wzorzec, spopularyzowany przez Netflix i Airbnb, umożliwia stopniową adopcję GraphQL bez zakłócania istniejących usług. GraphQL Federation (Apollo) idzie dalej: pozwala na komponowanie wielu usług GraphQL w zunifikowany graf, umożliwiając architektury supergraph, gdzie każdy mikroserwis eksponuje własny podgraf.