
Просто о сложном: язык запросов 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.
Больше интересных новостей



