English

Français

Deutsch

日本

Español

Nederlands

Dansk

Zaloguj się do GraphQL Editor
ZASOBY

Do czego służy GraphQL?

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

01Nowy język zapytań

GraphQL to język zapytań dla interfejsów API, który został opracowany przez Facebooka i jego społeczność programistów. Swoją premierę miał w czerwcu 2018 roku i jest obecnie dojrzałą technologią, która zyskała szerokie uznanie na rynku. W rezultacie jest dobrze rozpoznawalna i wiele firm decyduje się na jej wdrożenie. Aby powiedzieć Ci, 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 wiesz, opiera się on na czymś w rodzaju starego projektu systemu. Zgodnie z nim, każdy model danych jest dostępny pod osobnym adresem. Mając na przykład sklep internetowy z odzieżą, możemy mieć adresy dla koszyka, magazynu, produktów i wielu innych.

Język zapytań GraphQL

02Zdobądź tylko to, czego chciałeś

W rzeczywistości liczba takich adresów nigdy nie będzie mała, wręcz przeciwnie, będzie rosła wraz z rozwojem systemu. Pamiętaj, że dla prawie każdego adresu musisz utworzyć zestaw wywołań do obsługi żądań get, post, put lub delete. Spowoduje to dużą liczbę adresów do utrzymania i jeszcze większą liczbę wywołań potrzebnych do uzyskania danych. GraphQL działa w zupełnie inny sposób. Mamy tylko jeden adres, jedno źródło prawdy, z którego możemy żądać danych. To, co otrzymamy, zależy wyłącznie od nas i od tego, jak skonstruujemy zapytanie.

Zapytania GraphQL

03Elastyczne zapytania

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

Zapytania 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, modyfikacja lub usuwanie mogą być używane wielokrotnie bez zmiany wyniku.

REST vs GraphQL

05Podstawowe elementy

Podstawowymi elementami GraphQL są: mutacja:

  • zapytanie: podstawowa operacja pobierania w GraphQL, która pozwala nam uzyskać dane. Kluczową różnicą jest to, że uzyskujemy dokładnie te dane, o które prosiliśmy, konstruując zapytanie tak, aby uzyskać tylko to, czego 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 funkcje, jest napisany w SDL (Schema Definition Language), a jego głównymi komponentami są typy i pola resolver: funkcja używana do łączenia twojego schematu GraphQL z backendem, zamienia operacje na dane i może zwracać ciągi, liczby całkowite, null i inne prymitywy.
  • resolver: resolver: funkcja używana do łączenia twojego schematu GraphQL z backendem, zamienia operacje na dane i może zwracać ciągi, liczby całkowite, null i inne prymitywy.
Mutacje GraphQL

06Język definicji schematu

GraphQL używa własnej składni: SDL lub Schema Definition Language. Jest on używany 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.

Schematy GraphQL

07Rosnąca społeczność

Chociaż GraphQL wciąż nie jest tak popularny jak REST, jego społeczność szybko rośnie. Ma już wielu głównych użytkowników, takich jak GitHub, Netflix, PayPal czy Shopify. To tylko kwestia czasu, zanim pojawi się ich więcej.

Społeczność GraphQL

GraphQL

  • Brak nadmiernego lub niedostatecznego pobierania: GraphQL wykorzystuje elastyczne lub nawet zagnieżdżone zapytania, które zapewniają, że otrzymasz dokładnie i tylko to, czego potrzebujesz. Nie potrzebujesz wielu wywołań i nie otrzymujesz nadmiaru danych, wszystko może być obsłużone przez jedno specjalnie skonstruowane zapytanie.
  • Pojedynczy punkt końcowyPodobnie musisz mieć tylko jeden punkt końcowy. Struktura zapytania poradzi sobie z uzyskaniem tego, czego potrzebujesz, sposób organizacji danych jest nieistotny, o ile poprawnie skonstruujesz zapytanie, uzyska ono wszystko, czego potrzebujesz, nawet z kompletnego bałaganu.
  • Bezpieczeństwo typówSchematy GraphQL wykorzystują silny system typów, co oznacza, że wszystkie interfejsy API dostępne dla klienta są napisane w języku definicji schematu, co eliminuje niespójności danych i znacznie ułatwia znajdowanie błędów.

REST

  • Hierarchia: Interfejsy API REST używają jednolitych identyfikatorów zasobów (URI) do adresowania zasobów. Oznacza to, że wszystko odbywa się zgodnie z prostym podejściem hierarchicznym, które 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.
  • Wiele podróży w obie strony: Ze względu na hierarchiczną strukturę, interfejs API REST ma zwykle wiele punktów końcowych, a klient potrzebuje wielu wywołań, aby uzyskać wszystkie potrzebne dane.
  • Nadmierne i niedostateczne pobieranie: Hierarchiczna struktura i brak elastycznych zapytań oznacza, że interfejsy API REST zazwyczaj pobierają zbyt wiele niepotrzebnych danych lub wymagają wielu wywołań, aby uzyskać wszystkie potrzebne dane. Ma to oczywiście wpływ zarówno na przepustowość, jak i wydajność i jest zwykle tym większe, im większa jest aplikacja.

Gotowy do startu?

Podnieś poziom swojej pracy dzięki naszemu edytorowi, który łączy w sobie światowej klasy graf wizualny, dokumentację i konsolę API.

Rozpocznij pracę z edytorem GraphQL