ZASOBY

Czym jest GraphQL?

GraphQL to sposób komunikacji z API stworzony jako alternatywa dla REST.

01Nowy język zapytań

GraphQL to język zapytań dla API, który został opracowany przez Facebooka i ich społeczność dev. Swoją premierę miał w czerwcu 2018 roku, a obecnie jest dojrzałą technologią, która zdobyła szerokie uznanie rynku. W związku z tym jest dobrze rozpoznawalna i wiele firm decyduje się na jej wdrożenie. Aby powiedzieć, czym się różni, musimy przyjrzeć się temu, co jest nadal najczęściej używane: REST i na czym się opiera. GraphQL jest często nazywany następcą REST, ponieważ rozwiązuje jego kluczowe problemy. Jak zapewne Państwo wiedzą, opiera się on na pewnym starym projekcie systemu. Zgodnie z nim, każdy model danych jest dostępny pod osobnym adresem. Mając na przykład sklep internetowy z ubraniami, na przykład możemy mieć adresy dla koszyka, magazynu, produktów i wiele innych.

Język zapytań GraphQL

02Dostać tylko to, co się chciało

W rzeczywistości liczba takich adresów nigdy nie będzie mała, wręcz przeciwnie, będzie rosła wraz z systemem. Należy pamiętać, że dla prawie każdego adresu trzeba utworzyć zestaw wywołań, aby obsłużyć żądania get, post, put lub delete. W ten sposób powstanie duża liczba adresów do utrzymania i jeszcze większa liczba połączeń potrzebnych do uzyskania danych. GraphQL działa w zupełnie inny sposób. Mamy tylko jeden adres, jedno źródło prawdy, od którego możemy żądać danych. To, co otrzymamy, zależy wyłącznie od nas i od tego, jak skonstruujemy zapytanie.

Zapytanie GraphQL

03Elastyczne zapytania

Kluczową cechą GraphQL jest możliwość wykonywania elastycznych zapytań, w ramach których określamy dokładnie, jakie dane z API chcemy uzyskać. Ponadto język ten daje możliwość tworzenia zagnieżdżonych zapytań, dzięki czemu zyskuje w tych obszarach jeszcze większą przewagę nad REST API.

Zapytanie GraphQL

04Niezależność od platformy

Jednym z punktów podobieństwa między REST i GraphQL jest niezależność od platformy lub języka programowania. Inną wspólną cechą jest idempotencja tych samych operacji. Zarówno w przypadku architektury REST, jak i GraphQL, operacje takie jak pobieranie, modyfikowanie czy usuwanie mogą być stosowane wielokrotnie bez zmiany wyniku.

REST vs GraphQL

05Elementy podstawowe

Podstawowymi elementami GraphQL są: mutacja:

  • zapytanie: podstawowa operacja pobierania w GraphQL, która pozwala nam uzyskać dane. kluczową różnicą jest to, że otrzymujemy dokładnie te dane, o które prosiliśmy, poprzez skonstruowanie zapytania tak, aby uzyskać tylko to, co chcemy
  • mutacja: podstawowa operacja manipulacji danymi w GraphQL, która pozwala nam tworzyć, modyfikować lub usuwać dane
  • schemat: podstawa każdego projektu GraphQL, opisuje logikę i funkcjonalności, jest napisany w SDL (Schema Definition Language) i jego głównymi elementami są typy i pola resolver: funkcja używana do połączenia schematu GraphQL z backendem, zamienia operacje na dane i może zwracać ciągi, liczby całkowite, null i inne prymitywy
  • resolver: resolver: funkcja służąca do połączenia Państwa schematu GraphQL z backendem, zamienia operacje na dane i może zwracać ciągi, liczby całkowite, null i inne prymitywy
Mutacja GraphQL

06Język definicji schematu

GraphQL używa własnej składni: SDL lub Schema Definition Language. Służy ona do określenia schematu API oraz jego typów i pól. Typy są deklarowane za pomocą słowa kluczowego type, a pola są dodawane w nawiasach dla każdego typu obiektu.

Schemat GraphQL

07Rosnąca wspólnota

Chociaż GraphQL nie jest jeszcze tak popularny jak REST, jego społeczność szybko rośnie. Ma już kilku głównych adoptujących, takich jak GitHub, Netflix, PayPal czy Shopify. To tylko kwestia czasu, kiedy dołączą do nich kolejni.

Społeczność GraphQL

GraphQL

  • Hierarchia: Interfejsy API REST wykorzystują Uniform Resource Identifiers lub URI do adresowania zasobów. Oznacza to, że wszystko odbywa się w prostej hierarchii, co jest dobre dla małych projektów, ale może powodować wiele problemów w przypadku większych lub bardziej złożonych projektów.
  • Wielokrotne podróże w obie strony: Ze względu na hierarchiczną strukturę REST API ma zazwyczaj wiele punktów końcowych, a z kolei klient potrzebuje wielu połączeń, aby uzyskać wszystkie potrzebne dane.
  • Nadmierne i niedostateczne pobieranie danych: Struktura hierarchiczna i brak elastycznych zapytań oznacza, że interfejsy API REST zazwyczaj pobierają albo zbyt wiele niepotrzebnych danych, albo wymagają wielu wywołań, aby uzyskać wszystkie potrzebne dane. Ma to oczywiście wpływ na przepustowość i wydajność i zwykle jest tym większe, im większa jest aplikacja.

REST

  • Brak nadmiernego lub niepełnego pobierania danych: GraphQL wykorzystuje elastyczne, a nawet zagnieżdżone zapytania, które zapewniają, że otrzymają Państwo dokładnie i tylko to, czego potrzebują. Nie potrzeba wielu wywołań i nie otrzymuje się nadmiaru danych, wszystko może załatwić jedno specjalnie skonstruowane zapytanie.
  • Pojedynczy punkt końcowyPodobnie wystarczy mieć tylko jeden punkt końcowy. Struktura zapytania pozwoli uzyskać to, co jest potrzebne, nie ma znaczenia, jak zorganizowane są dane, o ile zapytanie zostanie prawidłowo skonstruowane, to nawet z kompletnego bałaganu uzyska wszystko, co jest potrzebne.
  • Bezpieczeństwo typówSchematy GraphQL wykorzystują silny system typów, oznacza to, że wszystkie API wystawione na klienta są napisane w języku definicji schematu, co eliminuje niespójność danych i ułatwia znalezienie błędów.
LeftCircle

Dlaczego warto używać GraphQL?

Jeśli chodzi o wydajność, przewaga GraphQL jest oczywista, ponieważ wystarczy jeden punkt końcowy, aby zapewnić wszystkie zasoby. Oczywiście zapytania mogą być dość złożone w zależności od tego, jakich danych Państwo potrzebują. Jednak utrzymanie jednego złożonego zapytania jest nadal o wiele łatwiejsze niż posiadanie dużej liczby punktów końcowych i potrzeba jeszcze większej liczby prostych zapytań, aby faktycznie uzyskać z nich wszystkie potrzebne dane. Dla każdej złożonej aplikacji z mikroserwisami GraphQL jest po prostu lepszy niż REST. Dla prostej aplikacji używanie REST jest nadal w porządku, ale jeżeli ta aplikacja kiedykolwiek się rozrośnie, napotka na te same problemy, o których mowa powyżej, a restrukturyzacja, aby ich uniknąć, będzie bardzo kłopotliwa.

Rozpocznij trial

Wykorzystaj darmowy trial i zobacz wszystkie funkcje GraphQL Editora na własne oczy!

Rozpocznij