GraphQL to sposób, w jaki aplikacja pobiera dane z serwera, w którym to sama aplikacja precyzyjnie mówi, jakich informacji potrzebuje, a serwer oddaje dokładnie tyle, ile poproszono, ani mniej, ani więcej. Stworzył go Facebook, żeby rozwiązać problem swoich aplikacji mobilnych, które przez wolniejszy internet pobierały za dużo niepotrzebnych danych.
Jak to działa i czym różni się od klasycznego podejścia
W tradycyjnym podejściu, zwanym REST, każdy rodzaj danych ma osobny adres. Chcąc pokazać profil użytkownika z jego zamówieniami i adresem, aplikacja musi często odpytać trzy różne miejsca i posklejać wynik. Do tego z każdego dostaje komplet pól, nawet tych, których w danym widoku nie użyje.
GraphQL odwraca to. Jest jeden punkt, do którego aplikacja wysyła zapytanie opisujące dokładnie, czego chce. Daj mi imię tego klienta, tytuły jego ostatnich pięciu zamówień i miasto dostawy. Serwer zwraca dokładnie ten zestaw, jednym strzałem. Mniej zapytań, mniej przesyłanych danych, szybsze działanie, zwłaszcza na telefonie.
Kiedy się stosuje i co daje firmie
GraphQL świeci tam, gdzie dane są rozgałęzione i różne ekrany potrzebują różnych ich fragmentów. Aplikacja mobilna z wieloma widokami, rozbudowany panel z pulpitami, system, który spina dane z kilku źródeł naraz.
- Aplikacja pobiera tylko to, co realnie wyświetla, więc działa szybciej, szczególnie przy słabym internecie.
- Front i backend mniej się blokują, bo dodanie nowego widoku rzadko wymaga przerabiania serwera.
- Struktura danych jest z góry opisana, więc mniej nieporozumień i mniej błędów.
GraphQL nie jest jednak zawsze lepszy od REST. Przy prostych projektach bywa nadmiarowy i dokłada złożoności, która się nie zwraca. W Neticat dobieramy podejście do konkretnego przypadku i sięgamy po GraphQL tam, gdzie aplikacja obsługuje dużo powiązanych danych i różnorodne ekrany, na przykład w aplikacjach mobilnych i rozbudowanych panelach. Dla firmy oznacza to szybsze aplikacje i tańszy rozwój w miejscach, gdzie danych jest naprawdę dużo, bez przepłacania złożonością tam, gdzie wystarczy prostsze rozwiązanie.