Просто о сложном: язык запросов GraphQL

Просто о сложном: язык запросов GraphQL

Кодим на Коленке

Мало кто слышал и знает о системе GraphQL. Даже в более узких кругах это достаточно сложная система, в которой готовы разбираться далеко не все программисты.

Но на самом деле многие из нас ежедневно используют продукты, созданные с его помощью. Например, Facebook, New York Times, GitHub, Shopify, Pinterest и пр. Давайте познакомимся с языком запросов поближе. 

GraphQL: определение и преимущества

GraphQL – это язык запросов, их проведения и манипулирования данными API. Его создала компания Meta (ранее Facebook) для собственных потребностей в 2012 году, а в 2015 – он стал доступен широкой аудитории. В конце 2018 года права на язык перешли к GraphQL Foundation. Сегодня он официально так и не переведен на русский язык.

GraphQL стал прекрасной альтернативой REST, в отличие от которого, он отправляет за один запрос сразу большое количество данных с нескольких источников. 

Преимущества:

  • достаточно одного запроса для извлечения данных;
  • нет привязки к одной базе данных;
  • клиентоориентированность за счет предоставления возможности получения необходимого количества данных;
  • для работы достаточно одного endpoint;
  • можно проверить правильность запроса до начала работы команды;
  • возможна комбинация запросов.

GraphQL имеет в своей основе два главных действия: запрос – query и схему – schema.

Запрос – query

GraphQL позволяет выполнять query с прописыванием дополнительного поля stuff. При формировании запроса не требуется прописывать полный путь и знать откуда будут поступать данные. Достаточно отправить его, и сервер сделает все остальное самостоятельно. То есть, отправленный query поступит на сервер и возвратится в виде готового ответа в формате JSON.

Самый простой запрос:

query {
 friends {
  name
  others {
   name
  }
 }
}

На него последует следующий ответ:

{
 "data": {
  "friends": {
   "name": "Alex",
   "others": [{
    "name": "Mike"
   },
   {
    "name": "Jason"
   },
   {
    "name": "Jack"
   }]
  }
 }
}

Ответ полностью отвечает на запрос и имеет идентичный ему формат. Для взаимодействия с языком запросов лучше всего использовать интегрированную среду разработки GraphiQL. После ее подключения будет проще структурировать все запросы, т.к. откроется удобный пользовательский интерфейс с возможностью прописывания каждой schema.

Схема – schema

Schema – это описание запрашиваемых типов данных и всего что с ними связано. Сервисы GraphQL прописывают типы данных, которые можно использовать для запроса. Без проверки на соответствие разработанной схеме, команда не будет выполнена. 

Например, отправляя запрос можно выбрать имя и адрес:

query {
 friend {
  name
  address
 }
}

Ответ всегда будет равен запросу. Именно поэтому мы постоянно можем предсказывать то, что нам выдаст сервер. Но при наличии подробного описания данных, удастся произвести полную детализацию и автоматизировать работу с большим количеством информации. Для этих целей как раз и предназначена schema.

Report Page