Istnieje wiele standardów architektonicznych typu open source do tworzenia i dystrybucji aplikacji. Najpopularniejsze API to REST (Representational State Transfer), SOAP (Simple Object Access Protocol), RPC (Remote Procedural Call) i GraphQL.

Interfejsy API RESTful są najczęściej używanym standardem architektury API. Jeśli napisałeś złożone interfejsy API RESTful z wieloma punktami końcowymi, prawdopodobnie zdałeś sobie sprawę, jak skomplikowane mogą być. Jest to szczególnie prawdziwe, jeśli istnieją tylko niewielkie różnice między punktami końcowymi.

Możesz również napotkać problemy z pobieraniem danych, ponieważ interfejsy API RESTful nie są wystarczająco elastyczne, aby wybrać określone dane. GraphQL rozwiązuje te problemy RESTful API.

Co to jest GraphQL?

GraphQL (Graph Query Language) to język zapytań i środowisko wykonawcze do tworzenia interfejsów API. W przeciwieństwie do interfejsów API REST z wieloma punktami końcowymi do konsumowania danych, interfejsy API GraphQL mają jeden punkt wejścia. Możesz pobrać określone dane, opisując je w zapytaniach.

instagram viewer

The Specyfikacja GraphQL definiuje język zapytań i sposób działania serwerów GraphQL. Możesz tworzyć i wykorzystywać interfejsy API GraphQL w językach po stronie serwera od Pythona do JavaScriptoraz dowolny język obsługujący protokół HTTP.

Meta zbudowała GraphQL w 2012 roku jako alternatywę dla REST do budowania na HTTP. Wydali GraphQL jako standard open source w 2015 roku. Obecnie fundacja GraphQL nadzoruje rozwój specyfikacji GraphQL.

GraphQL jest dość nowy, ma niskie rozpowszechnienie, a korzystanie z niego wiąże się z ukrytymi kosztami. Tworzenie interfejsów API GraphQL może być niepotrzebnie skomplikowane, szczególnie w przypadku małych projektów z kilkoma punktami końcowymi.

Ponadto wszystkie żądania GraphQL ostatecznie zwracają kod statusu 200, niezależnie od stanu żądania.

Jak działa GraphQL?

w odróżnieniu REST, który jest zorientowany na zasoby, GraphQL wymaga myślenia o danych jako o wykresie do interakcji z danymi. Możesz określić strukturę danych, a specyfikacja zapewnia solidny interfejs zapytań do interakcji z interfejsem API przez HTTP. Będziesz mógł korzystać z różnych funkcji w zależności od Pakiet lub biblioteka GraphQL zdecydujesz się użyć.

Schematy GraphQL obejmują typy obiektów, które definiują żądany obiekt i jego dostępne pola. W przypadku zapytań i mutacji API pakiet GraphQL sprawdza poprawność zapytań i wykonuje zapytania w oparciu o określone funkcje obsługi (resolwery).

Dlaczego warto używać GraphQL?

REST to łatwy w użyciu standard, a większość języków programowania ma narzędzia do szybkiego tworzenia interfejsów API RESTful. Istnieje jednak wiele problemów związanych z budowaniem i używaniem interfejsów API RESTful.

Oto niektóre problemy z REST, które sprawiają, że programiści preferują GraphQL w niektórych przypadkach użycia.

Nieefektywne pobieranie danych

Interfejsy API RESTful przekazują dane na podstawie specyfikacji punktu końcowego. Nie są wystarczająco elastyczne, aby pobierać dane wykraczające poza to, co jest zakodowane na stałe w funkcji obsługi punktu końcowego.

Załóżmy, że punkt końcowy zwraca listę danych podczas wywołania i musisz określić wartości lub kryteria dla pól. W takim przypadku programista musi utworzyć punkt końcowy i zdefiniować logikę biznesową, aby zwrócić dane. Cenny zasób można przeanalizować ręcznie, co ostatecznie zajmuje więcej czasu.

GraphQL rozwiązuje problem nieefektywnego pobierania danych, ponieważ można elastycznie wysyłać zapytania do interfejsów API w celu zwracania danych w oparciu o kryteria i specyfikacje.

Interfejsy API GraphQL są interaktywne; możesz określić dane, które chcesz pobrać, w łatwej, czytelnej składni.

{
użytkownik (gdzie: {wiek: {_eq: "89"}}) {
nazwa
szkoła(Gdzie: {żywy: {_eq: true}}) {
bio
narodowość
}
}
}

Powyższe zapytanie GraphQL a użytkownik schemat dla wpisów, w których wiek pole to 89. Zapytanie ma osadzone zapytanie dla wpisów, w których żywy pole ocenia PRAWDA. Zwraca pola imię i nazwisko, biografię i narodowość ze schematu.

Szybki rozwój

Budowanie i korzystanie z interfejsów API GraphQL jest łatwiejsze niż używanie REST, zwłaszcza w miarę wzrostu rozmiaru projektu. W fazie programowania nie musisz opracowywać tak wielu tras i funkcji obsługi, jak podczas opracowywania interfejsów API RESTful. Używanie API GraphQL nie jest tak uciążliwe jak API RESTful.

W REST różne punkty końcowe dają dostęp do różnych zasobów, w przeciwieństwie do GraphQL, gdzie istnieje jeden punkt końcowy. Daje to elastyczność i wydajność, a zapytania mogą wywoływać różne funkcje tłumacza.

Język definicji schematu GraphQL

Język definicji schematu GraphQL (SDL) określa schematy dla usług GraphQL.

Składnia GraphQL SDL jest łatwa do odczytania i zrozumienia. Określisz strukturę swojego schematu w pliku z rozszerzeniem .grafql Lub .graphqls rozszerzenie.

typ Człowiek {
nazwa: Strunowy!
wiek: int!
}

wpisz DodajCzłowieka {
nazwa: Strunowy!
wiek: int!
}

typ mutacja {
CreateHuman (wejście: AddHuman!): Człowiek!
DeleteHuman (identyfikator: Int!): Strunowy!
UpdateHuman (identyfikator: Int!): Strunowy!
}

typ Zapytanie {
GetHuman (id: Int!): Człowiek!
GetHumans: [Człowiek!]!
}

Powyższy kod GraphQL to schemat API GraphQL definiujący strukturę API dla żądań. Schemat definiuje funkcjonalność CRUD dla interfejsu API.

Po stronie klienta, w oparciu o strukturę schematu i dane lub operację klienta, klient może wykonać zapytanie (GET lub DELETE w REST) ​​lub a mutacja (PUT lub POST).

Oto przykład zapytania do pliku Człowiek schemat.

zapytanie Człowiek {
nazwa
wiek
}

Powyższe zapytanie zwróci ludzkie schematy nazwa I wiek dane terenowe.

Mutacje GraphQL mają dość inną składnię w przeciwieństwie do zapytań. Oto przykładowa operacja mutacji na Człowiek schemat.

mutacja {
CreateHuman (wejście: {nazwa:"Człowiek", wiek: 1000000000000000,}) {
nazwa
wiek
}
}

Wejścia kodu mutacji nazwa I wiek pól do klienta i zwraca dane z pól.

Będziesz potrzebować magazynu danych, aby zachować trwałość podczas budowania interfejsu API GraphQL. Podobnie jak REST i większość architektur internetowych opartych na protokole HTTP, GraphQL jest bezstanowy i możesz użyć dowolnego magazynu danych lub bazy danych dla swojej aplikacji.

Budowanie API GraphQL

GraphQL to specyfikacja i możesz zbudować GraphQL w najpopularniejszych językach po stronie serwera. Musisz znaleźć bibliotekę z funkcjami potrzebnymi do Twojego projektu.

Wybierając bibliotekę GraphQL, chcesz użyć biblioteki bogatej w funkcje, która obsługuje wszystkie typy i operacje GraphQL. Większość bibliotek stosuje podejście oparte na schemacie lub najpierw na kodzie. W pierwszym definiujesz schemat GraphQL, a biblioteka generuje resolwery i kod standardowy. W tym drugim przypadku kodujesz na stałe resolwery bez definiowania schematu.

GraphQL zyskuje popularność

Od samego początku GraphQL programiści i firmy wypuszczały narzędzia upraszczające jego użycie. Mogą one skrócić czas opracowywania mniejszych i średnich projektów.

Możesz sprawdzić klientów GraphQL typu open source, dokumentację GraphQL i jego specyfikację, aby dowiedzieć się więcej.