Учебники

GraphQL — Введение

GraphQL — это серверная технология с открытым исходным кодом, которая была разработана Facebook для оптимизации вызовов RESTful API. Это механизм исполнения и язык запросов данных. В этой главе мы обсудим преимущества использования GraphQL.

Почему GraphQL

API RESTful следуют четкому и хорошо структурированному ресурсо-ориентированному подходу. Однако, когда данные становятся более сложными, маршруты становятся длиннее. Иногда невозможно получить данные одним запросом. Вот где GraphQL пригодится. GraphQL структурирует данные в виде графа с мощным синтаксисом запросов для обхода, извлечения и изменения данных.

Ниже приведены преимущества использования языка запросов GraphQL —

Спросите, что вы хотите — и получите

Отправьте запрос GraphQL своему API и получите именно то, что вам нужно. Запросы GraphQL всегда возвращают предсказуемые результаты. Приложения, использующие GraphQL, работают быстро и стабильно. В отличие от служб Restful, эти приложения могут ограничивать данные, которые должны быть получены с сервера.

Следующий пример поможет вам лучше понять это —

Давайте рассмотрим бизнес-объект Student с атрибутами id, firstName, lastName и CollegeName . Предположим, мобильному приложению нужно выбрать только firstName и id . Если мы спроектируем конечную точку REST наподобие / api / v1 / Students , в результате будет получена информация для всех полей объекта ученика . Это означает, что данные перегружены службой RESTful. Эту проблему можно решить с помощью GraphQL.

Рассмотрим запрос GraphQL, приведенный ниже —

{
   students {
      id
      firstName
   }
}

Это вернет значения только для полей id и firstname. Запрос не будет извлекать значения для других атрибутов объекта ученика. Ответ на запрос, показанный выше, показан ниже:

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

Получите много ресурсов в одном запросе

Запросы GraphQL помогают беспрепятственно извлекать связанные бизнес-объекты, в то время как типичные API REST требуют загрузки с нескольких URL-адресов. API-интерфейсы GraphQL извлекают все данные, необходимые для вашего приложения, за один запрос. Приложения, использующие GraphQL, могут быть быстрыми даже при медленных подключениях к мобильной сети.

Давайте рассмотрим еще один бизнес-объект, College, который имеет атрибуты: название и местонахождение. Бизнес-объект Student имеет связь с объектом College. Если бы мы использовали API REST для получения сведений о студентах и ​​их колледжах, мы в конечном итоге сделаем два запроса к серверу, например / api / v1 / Students и / api / v1 / colleges . Это приведет к неполной загрузке данных с каждым запросом. Поэтому мобильные приложения вынуждены совершать несколько звонков на сервер, чтобы получить нужные данные.

Однако мобильное приложение может извлекать подробности для объектов Student и College за один запрос с помощью GraphQL.

Ниже приведен запрос GraphQL для извлечения данных:

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

Выходные данные вышеупомянутого запроса содержат именно те поля, которые мы запросили, как показано ниже —

{
   "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"
            }
         }
      ]
   }
}

Опишите, что возможно с системой типов

GraphQL строго типизирован, а запросы основаны на полях и связанных с ними типах данных. Если в запросе GraphQL есть несоответствие типов, серверные приложения возвращают понятные и полезные сообщения об ошибках. Это помогает в отладке и обнаружении ошибок клиентскими приложениями. GraphQL также предоставляет клиентские библиотеки, которые могут помочь в сокращении явного преобразования и анализа данных.

Пример типов данных Student и College приведен ниже —

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]
}

Двигайтесь быстрее с помощью мощных инструментов разработчика

GraphQL предоставляет богатые инструменты разработчика для документации и тестирования запросов. GraphiQL — отличный инструмент, который генерирует документацию по запросу и его схеме. Он также предоставляет редактор запросов для тестирования API-интерфейсов GraphQL и возможности интеллектуального завершения кода при построении запросов.