Spis treści
- Popularne style API
- Cechy GraphQL
- Charakterystyka REST
- Kiedy opłaca się zastosować GraphQL, a kiedy REST API?
- Podsumowanie
- GraphQL w 2018 roku dołączył do znanych i szeroko stosowanych stylów architektury API, takich jak SOAP, REST czy gRPC.
- Wspólną zaletą REST API i GraphQL jest niezależność od platformy, czy języka programowania. Obydwie architektury mogą być implementowane w dowolnym języku oprogramowania.
- Dokumentacja GraphQL sprawdza się z powodzeniem w aplikacjach mobilnych, natomiast REST API lepiej radzi sobie z bardziej złożonymi systemami.
Popularne style API
Dowolne połączenie API umożliwia aplikacjom wymianę informacji. Na rynku dostępnych jest wiele technologii, które można wykorzystać do projektowania i wdrażania interfejsów API. Jednak zanim wybierzesz jedną technologię, zdecyduj, który styl API chcesz użyć. W ostatnich latach największą popularnością cieszyło się REST API, które wyparło technologię SOAP z powszechnego użytku.
Kroku dotrzymują mu dzisiaj architektury gRPC oraz GraphQL. I właśnie ten ostatni styl, może być tym, które w przyszłości wyprzedzi powszechnie stosowane REST API.
Zanim jednak to tego dojdzie, upłynie jeszcze sporo czasu, w trakcie których rozwiną się biblioteki zawierające różne opcje implementacji wybranej technologii. Na ten moment, żadne rozwiązanie nie jest idealne i nie spełnia wszystkich oczekiwań frontendu. Dlatego już na etapie planowania projektu warto spojrzeć strategicznie na dobór właściwej architektury.
Nierzadko, dany interfejs zyskuje na funkcjonalności w połączeniu z konkretnym językiem programowania, np. GraphQL dobrze dogaduje się z bibliotekami JavaScript.
Nie oznacza to jednak, że użytkownicy popularnych bibliotek i frameworków jak React, Angular, Vue czy Nest JS są skazani na język zapytań GraphQL. Interfejs REST API również jest bardzo uniwersalny i tak samo jak GraphQL może zostać zaimplementowany w dowolnym języku. Do tego znacznie lepiej sprawdza się w architekturze jednocześnie przystosowanej do potrzeb aplikacji mobilnych i webowych.
Cechy GraphQL
GraphQL jest często traktowany jako następca REST API, ponieważ eliminuje kluczowe niedogodności starszej technologii. Został opracowany przez inżynierów Facebooka już w 2012 roku, jednak publicznie zadebiutował dopiero w 2018 roku, stając się niezależnym językiem open source. Otwarta dokumentacja GraphQL pozwoliła rozszerzyć jego możliwości, co przełożyło się na skokowy wzrost liczby użytkowników. W rezultacie powstały dziesiątki różnych implementacji, w każdym wiodącym języku oprogramowania.
GraphQL jest technologią, która ułatwia pracę po stronie frontendu, pozwala programistom wykonywać zapytania o wiele szybciej niż dotychczas. Dane z bazy pozyskiwane są za pomocą mapowania relacji między obiektami. Tak długo, jak implementacja analizuje schematy, struktury, w określony sposób API oparte na GraphQL będzie współpracować z każdą inną aplikacją.
Opracowanie funkcjonalnych interfejsów API wymaga zastosowania dwóch komponentów: serwera i klienta. Zadaniem serwera jest obsługa przychodzących zapytań i ich analiza. Za pomocą zdefiniowanych schematów pobiera dane i zwraca je w określonym formacie, w przypadku JavaScript jest to popularny JSON.
Takie elastyczne zapytania są kluczową cechą odróżniającą GraphQL od REST API. To twórca aplikacji definiuje, jakiej odpowiedzi od API oczekuje. Dodatkowo język ten stwarza możliwość tworzenia wielu zapytań jednocześnie, co sprawa że w tych obszarach zyskuje on przewagę nad REST API.
Charakterystyka REST
REST jest nieco starszy, niż GraphQL, bowiem zadebiutował dwie dekady temu. Jego koncepcja opiera się na implementacji punktów końcowych, zwanych swojsko „endpointami”, będących miejscem dostępu do określonych zasobów. Dla tego interfejsu, to serwer określa ich liczbę, postać, wymagane parametry żądania i strukturę odpowiedzi.
Do zalet REST należy przede wszystkim uniwersalność oraz możliwość jednoczesnej aplikacji API w środowisku webowym i mobilnym. Poza tym, głęboko osadzone w protokole http, interfejsy są intuicyjne i wygodne w użytkowaniu. Wraz z wyparciem technologii SOAP, REST osiągnął wysoką popularność, którą wzmacnia szerokie zastosowanie oraz wielość narzędzi do jego wsparcia. REST API sprawdza się bardzo dobrze w odniesieniu do zasobów takich jak strony internetowe. Między innymi, umożliwia zastosowanie wielu różnych narzędzi do sondowania adresów URL.
Siła REST polega także na tym, że programista pracujący z cudzym API nie potrzebuje żadnej złożonej inicjalizacji ani bibliotek. Żądania mogą być po prostu wysyłane za pomocą wspólnego oprogramowania, takiego jak cURL i przeglądarki internetowej. Wykorzystanie URL do mapowania danych, ma jednak istotną wadę, dziesiątki zapytań zawierające konkretne URL-e odbijają się na czytelności kodu. Pod tym względem dokumentacja GraphQL jest znacznie bardziej przejrzysta.
Kiedy opłaca się zastosować GraphQL, a kiedy REST API?
Mamy tutaj do czynienia z dwiema różnymi koncepcjami. Z jednej strony, prosty schemat oparty o język zapytań, a z drugiej rozbudowane środowisko korzystające z URL. Odmienne założenia leżące u podstaw każdej z tych technologii determinują ich zastosowanie. W złożonych projektach, łączących środowisko webowe i mobilne przewagę ma REST API. Natomiast w przypadku lżejszych i szybszych implementacji lepiej sprawdza się GraphQL, zwłaszcza kiedy liczba endpointów do zdefiniowania w REST jest zbyt pracochłonna w porównaniu do skali projektu.
GraphQL dla aplikacji mobilnych
W porównaniu do skomplikowanych systemów, aplikacje mobilne wymagają maksymalizacji wydajności przy ograniczonych zasobach. GraphQL nie tylko sprawnie radzi sobie z przetwarzaniem zapytań, ale jest także kompatybilny z językami oprogramowania, w których powstają aplikacje mobilne. Również czas potrzebny na wdrożenie przemawia na korzyść GraphQL. W projektach, o krótkim czasie na realizacje, zdecydowanie lepiej sprawdzi się język zapytań autorstwa inżynierów Facebooka.
REST API dla złożonych projektów
Najczęstszym scenariuszem wykorzystania interfejsów API REST jest dostarczanie statycznych reprezentacji zasobów w formacie XML lub JSON. Ten styl architektoniczny pozwala jednak użytkownikom na pobieranie i uruchamianie kodu w postaci apletów Javy lub skryptów (takich jak JavaScript). Dostrojenie REST API, poprzez definiowanie nowych endpointów jest bardziej pracochłonne, innymi słowy wymaga więcej czasu i zasobów. Dlatego właśnie REST stosuje się w złożonych projektach.
Podsumowanie
Wybór odpowiedniego interfejsu API zależy od wielu czynników, takich jak dominujący język programowania, środowisko, osobiste preferencje czy termin realizacji. Idealna architektura API nie istnieje, czasem lepiej sprawdzi się GraphQL, a czasem REST. Dlatego, patrząc strategicznie, warto śledzić rozwój obydwu technologii i stosować je wymiennie w zależności od potrzeb.