Преимущества GraphQL
Что такое GraphQL?
В этой статье я вам расскажу об одном из самых современных способов построения API запросов. GraphQL — это синтаксис, который используется для загрузки данных с сервера клиенту, при этом он описывает, как запрашивать данные. GraphQL имеет три основные характеристики:
- Позволяет клиенту точно указать, какие данные ему нужны.
- Упрощает сбор данных из нескольких источников.
- Использует систему типов для описания данных.
С помощью GraphQL пользователь может сделать один вызов для получения требуемой информации, а не создавать несколько REST запросов.
GitHub использует GraphQL, поскольку он предлагает большую гибкость для разработчиков. Возможность точно генерировать информацию, которую хочет пользователь, является большим преимуществом перед отправкой нескольких вызовов REST.
Запрос GraphQL — это строка, которая отправляется на сервер, запрос будет интерпретироваться и выполняться, а затем сервер возвращает клиенту JSON.
Преимущества использования
Вы могли заметить с примера, что запросы GraphQL определяют форму данных ответа. Подобная система позволяет заранее знать форму данных ответа, на этапе формирования запроса и довольно легко написать запрос, если вы знаете данные, которые нужны вашему приложению. Что еще более важно, это делает GraphQL очень простым в освоении и использовании.
Еще один важный аспект GraphQL — его иерархический характер. GraphQL построен на взаимосвязи между объектами, что упрощает формирование запросов, где службе RESTful может потребоваться многократная система запросов request/response или сложная операция объединения в SQL.
GraphQL является строго типизированным — каждый уровень запроса GraphQL соответствует определенному типу, и каждый тип описывает набор доступных полей.
С использованием большинства API рано или поздно мы сталкиваемся с проблемой, когда нужно узнать какие операции выполняет наша схема. Особенно это становится проблемой если нет надлежащей документации и нам предстоит разобраться в старом коде.
Схема GraphQL является основой каждого API GraphQL. Он четко определяет операции, поддерживаемые API, включая входные аргументы и возможные ответы.
Форма возвращаемых данных полностью соответствует запросу клиента, что значительно упрощает разработку. Это значит, что клиенты могут извлекать именно те данные, которые им нужны из API, им не нужно полагаться на конечные точки REST, которые возвращают предопределенные и фиксированные структуры данных. Вместо этого клиент может диктовать форму объектов ответа, возвращаемых API.
Это решает две проблемы, с которыми обычно сталкиваются API-интерфейсы REST: чрезмерная выборка и недоиспользование.
Когда вы добавляете новые функции продукта, на сервер могут быть добавлены дополнительные поля, в результате чего существующие клиенты не будут затронуты.
GraphQL упрощает жизнь разработчиков front-end. Благодаря клиентским библиотекам (например, Apollo, Relay или Urql) разработчики получают такие функции, как кеширование, обновления пользовательского интерфейса.