GraphQL - Wprowadzenie

GraphQL to technologia open source po stronie serwera, która została opracowana przez Facebooka w celu optymalizacji wywołań RESTful API. Jest to silnik wykonawczy i język zapytań o dane. W tym rozdziale omówimy zalety korzystania z GraphQL.

Dlaczego GraphQL

RESTful API są zgodne z przejrzystym i dobrze zorganizowanym podejściem zorientowanym na zasoby. Jednak gdy dane stają się bardziej złożone, trasy stają się dłuższe. Czasami nie jest możliwe pobranie danych za pomocą jednego żądania. Tutaj przydaje się GraphQL. GraphQL strukturyzuje dane w postaci wykresu z potężną składnią zapytań do przechodzenia, pobierania i modyfikowania danych.

Oto zalety używania języka zapytań GraphQL -

Zapytaj o co chcesz - i zdobądź to

Wyślij zapytanie GraphQL do swojego API i uzyskaj dokładnie to, czego potrzebujesz. Zapytania GraphQL zawsze zwracają przewidywalne wyniki. Aplikacje korzystające z GraphQL są szybkie i stabilne. W przeciwieństwie do usług Restful, aplikacje te mogą ograniczać dane, które powinny być pobierane z serwera.

Poniższy przykład pomoże ci lepiej to zrozumieć -

Rozważmy obiekt biznesowy Student z atrybutami id, firstName, lastName i collegeName . Załóżmy, że aplikacja mobilna musi pobierać tylko imię i nazwisko oraz identyfikator . Jeśli zaprojektujemy punkt końcowy REST, taki jak / api / v1 / Students , zakończy się pobieranie danych dla wszystkich pól dla obiektu studenta . Oznacza to, że usługa RESTful pobiera za dużo danych. Ten problem można rozwiązać za pomocą GraphQL.

Rozważ zapytanie GraphQL podane poniżej -

{
   students {
      id
      firstName
   }
}

To zwróci wartości tylko dla pól id i imię. Zapytanie nie pobierze wartości dla innych atrybutów obiektu ucznia. Odpowiedź na zapytanie przedstawione powyżej jest taka, jak pokazano poniżej -

{
   "data": {
      "students": [
         {
            "id": "S1001",
            "firstName": "Mohtashim"
         },
         {
            "id": "S1002",
            "firstName": "Kannan"
         }
      ]
   }
}

Uzyskaj wiele zasobów w jednym żądaniu

Zapytania GraphQL pomagają płynnie pobierać powiązane obiekty biznesowe, podczas gdy typowe interfejsy API REST wymagają ładowania z wielu adresów URL. Interfejsy GraphQL pobierają wszystkie dane potrzebne aplikacji w jednym żądaniu. Aplikacje korzystające z GraphQL mogą być szybkie nawet przy wolnych połączeniach z siecią komórkową.

Rozważmy jeszcze jeden obiekt biznesowy, College, który ma atrybuty: nazwę i lokalizację. Obiekt biznesowy Student jest powiązany z obiektem College. Gdybyśmy mieli użyć REST API w celu pobrania danych studentów i ich uczelni, w końcu wyślemy dwa żądania do serwera, takie jak / api / v1 / Students i / api / v1 / colleges . Doprowadzi to do niedostatecznego pobierania danych przy każdym żądaniu. Dlatego aplikacje mobilne są zmuszone do wykonywania wielu połączeń z serwerem w celu uzyskania żądanych danych.

Jednak aplikacja mobilna może pobierać szczegóły zarówno dla obiektów studenta, jak i uczelni w jednym żądaniu przy użyciu GraphQL.

Poniżej znajduje się zapytanie GraphQL do pobrania danych -

{
   students{
      id
      firstName
      lastName
      college{
         name
         location
      }
   }
}

Wynik powyższego zapytania zawiera dokładnie te pola, o które prosiliśmy, jak pokazano poniżej -

{
   "data": {
      "students": [
         {
            "id": "S1001",
            "firstName": "Mohtashim",
            "lastName": "Mohammad",
            "college": {
               "name": "CUSAT",
               "location": "Kerala"
            }
         },
         
         {
            "id": "S1002",
            "firstName": "Kannan",
            "lastName": "Sudhakaran",
            "college": {
               "name": "AMU",
               "location": "Uttar Pradesh"
            }
         },
         
         {
            "id": "S1003",
            "firstName": "Kiran",
            "lastName": "Panigrahi",
            "college": {
               "name": "AMU",
               "location": "Uttar Pradesh"
            }
         }
      ]
   }
}

Opisz, co jest możliwe w systemie typów

GraphQL jest silnie wpisany, a zapytania są oparte na polach i skojarzonych z nimi typach danych. Jeśli w zapytaniu GraphQL wystąpi niezgodność typów, aplikacje serwera zwracają jasne i pomocne komunikaty o błędach. Pomaga to w płynnym debugowaniu i łatwym wykrywaniu błędów przez aplikacje klienckie. GraphQL udostępnia również biblioteki po stronie klienta, które mogą pomóc w zmniejszeniu jawnej konwersji i analizy danych.

Poniżej podano przykład typów danych dla studentów i uczelni -

type Query {
   students:[Student]
}

type Student {
   id:ID!
   firstName:String
   lastName:String
   fullName:String
   college:College
}

type College {
   id:ID!
   name:String
   location:String
   rating:Float
   students:[Student]
}

Działaj szybciej dzięki potężnym narzędziom programistycznym

GraphQL zapewnia bogate narzędzia programistyczne do tworzenia dokumentacji i zapytań testowych. GraphiQL to doskonałe narzędzie do tworzenia dokumentacji zapytania i jego schematu. Udostępnia również edytor zapytań do testowania interfejsów API GraphQL i inteligentnego uzupełniania kodu podczas tworzenia zapytań.