GraphQL: alternatywa dla REST w HTTP

GraphQL: alternatywa dla REST w HTTP

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





RESTful API to najczęściej używany standard 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 między punktami końcowymi występują tylko niewielkie różnice.





MAKEUSEOF WIDEO DNIA

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.





jak nagrać rozmowę telefoniczną na moim iPhonie?

Co to jest GraphQL?

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

The Specyfikacja GraphQL definiuje język zapytań i sposób działania serwerów GraphQL. Możesz budować i wykorzystywać API GraphQL w językach po stronie serwera od Pythona do JavaScript i 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. Dziś fundacja GraphQL nadzoruje rozwój specyfikacji GraphQL.

GraphQL jest dość nowy, ma niską adopcję, a korzystanie z niego wiąże się z ukrytymi kosztami. Budowanie 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?

  WykresQL's functions and syntax

w odróżnieniu REST, który jest zorientowany na zasoby , GraphQL wymaga, abyś myślał o danych jako wykresie do interakcji z danymi. Możesz określić strukturę danych, a specyfikacja zapewnia niezawodny 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 zawierają typy obiektów, które definiują żądany obiekt i jego dostępne pola. W przypadku zapytań API i mutacji pakiet GraphQL sprawdza poprawność zapytań i wykonuje zapytania w oparciu o określone funkcje obsługi (resolvery).

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 zgodnych z REST. Istnieje jednak wiele problemów z tworzeniem 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 poza to, co jest na stałe zakodowane w funkcji obsługi punktu końcowego.

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

GraphQL rozwiązuje problem nieefektywnego pobierania danych, ponieważ można elastycznie wysyłać zapytania do interfejsów API, aby zwracać dane na podstawie kryteriów i specyfikacji.

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

{ 
user(where: {age: {_eq: "89"}}) {
name
school(where: {alive: {_eq: true}}) {
bio
nationality
}
}
}

Zapytanie GraphQL powyżej zapytań a użytkownik schemat dla wpisów, w których wiek pole to 89. Zapytanie ma wbudowane zapytanie dla wpisów, w których żywy pole ocenia PRAWDA . Zwraca pola nazwiska, biografii i narodowości ze schematu.

Szybki rozwój

Tworzenie i używanie interfejsów API GraphQL jest łatwiejsze niż korzystanie z REST, zwłaszcza gdy rozmiar projektu rośnie. W fazie rozwoju nie musisz opracowywać tylu tras i funkcji obsługi, ile będziesz robić podczas tworzenia interfejsów API RESTful. Korzystanie z API GraphQL nie jest tak żmudne jak API RESTful.

jakie pokolenie to najnowszy iPad

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

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 .graphql lub .graphqls rozbudowa.

jak sformatować kartę SD na Macu
type Human { 
name: String!
age: Int!
}

input AddHuman {
name: String!
age: Int!
}

type Mutation {
CreateHuman(input: AddHuman!): Human!
DeleteHuman(id: Int!): String!
UpdateHuman(id: Int!): String!
}

type Query {
GetHuman(id: Int!): Human!
GetHumans: [Human!]!
}

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

Po stronie klienta, na podstawie struktury schematu i danych lub operacji klienta, klient może wykonać zapytanie (GET lub DELETE w REST) ​​lub a mutacja (PUT lub POST).

Oto przykład zapytania Człowiek schemat.

query Human { 
name
age
}

Powyższe zapytanie zwróci ludzkie schematy Nazwa oraz wiek dane terenowe.

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

mutation { 
CreateHuman(input:{ name:"man", age:1000000000000000,}) {
name
age
}
}

Wejścia kodu mutacji Nazwa oraz wiek pola do klienta i zwraca dane z pól.

Będziesz potrzebować magazynu danych do utrwalenia podczas kompilowania interfejsu API GraphQL. Podobnie jak REST i większość architektury internetowej opartej na HTTP, GraphQL jest bezstanowy i możesz użyć dowolnego magazynu danych lub bazy danych dla swojej aplikacji.

Budowanie GraphQL API

  Obsługiwane języki GraphQL

GraphQL jest specyfikacją i możesz budować GraphQL w najpopularniejszych językach po stronie serwera. Będziesz musiał znaleźć bibliotekę z funkcjami, których potrzebujesz do swojego projektu.

Wybierając bibliotekę GraphQL, chcesz użyć bogatej w funkcje biblioteki, która obsługuje wszystkie typy i operacje GraphQL. Większość bibliotek przyjmuje podejście najpierw schemat lub kod. W pierwszym przypadku definiujesz schemat GraphQL, a biblioteka generuje przeliczniki i standardowy kod. W przypadku tych ostatnich kodujemy na sztywno przeliczniki bez definiowania schematu.

GraphQL zyskuje adopcję

Od momentu powstania GraphQL programiści i firmy udostępnili narzędzia ułatwiające jego użytkowanie. Mogą one skrócić czas opracowywania mniejszych i średnich projektów.

Możesz zapoznać się z klientami GraphQL typu open source, dokumentacją GraphQL i jej specyfikacją, aby dowiedzieć się więcej.