Что такое GraphQL?

GraphQL - это язык запросов (это то, что означает «QL») для API и среда выполнения для выполнения этих запросов с вашими существующими данными. По сути, он используется для загрузки данных с сервера на клиент - это способ получить данные из API в ваше приложение. И, как вы увидите, он делает это гораздо более эффективно, чем традиционные методы и службы.

Так что же это за язык запросов, на котором совершаются сотни миллиардов вызовов API в день, как именно он используется и почему? Давайте посмотрим, почему фронтенд и бэкенд разработчиков так заинтригованы его возможностями.

Происхождение GraphQL

GraphQL был разработан Facebook в 2012 году, потому что команде при создании мобильных приложений потребовался «API для извлечения данных, достаточно мощный, чтобы описать всю работу Facebook, но достаточно простой, чтобы его было легко изучить и использовать». С тех пор популярность языка запросов неуклонно росла - отчасти из-за того, что Facebook открыл этот язык в 2016 году.

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

Когда Facebook потребовалась версия данных API для ленты новостей, они рассмотрели ресурсы сервера RESTful, но обнаружили различия между данными в приложении и запросами сервера, которые им требовались. GraphQL позволил команде по-новому взглянуть на получение данных.

Итак, что такое GraphQL?

Запрос GraphQL - это строка, которая отправляется на сервер для интерпретации и выполнения, которая затем возвращает JSON обратно клиенту.

Определяет форму данных: первое, что вы заметите, - это то, что запросы GraphQL отражают их ответ. Это позволяет легко прогнозировать форму данных, возвращаемых из запроса, а также писать запрос, если вы знаете, какие данные нужны вашему приложению. Что еще более важно, это делает GraphQL действительно простым в изучении и использовании. GraphQL без извинений руководствуется требованиями к данным продуктов, проектировщиков и разработчиков, которые их создают.

Иерархический: еще один важный аспект GraphQL - его иерархическая природа. GraphQL естественно следует за отношениями между объектами, где для службы RESTful может потребоваться несколько циклов приема-передачи (ресурсоемкие в мобильных сетях) или сложный оператор соединения в SQL. Эта иерархия данных хорошо сочетается с хранилищами данных с графической структурой и, в конечном итоге, с иерархическими пользовательскими интерфейсами, в которых она используется.

Строго типизированный: каждый уровень запроса GraphQL соответствует определенному типу, и каждый тип описывает набор доступных полей. Подобно SQL, это позволяет GraphQL предоставлять описательные сообщения об ошибках перед выполнением запроса.

Протокол, а не хранилище: каждое поле GraphQL на сервере поддерживается любой произвольной функцией. GraphQL должен был использовать всю эту существующую работу, чтобы быть полезным, и поэтому не требует и не предоставляет никакого резервного хранилища. Вместо этого GraphQL использует ваш существующий код.

Интроспектива: у сервера GraphQL можно запросить типы, которые он поддерживает. Это создает мощную платформу для инструментов и клиентского программного обеспечения для создания поверх этой информации, такой как генерация кода на статически типизированных языках, Relay или IDE, таких как GraphiQL (на фото ниже). GraphiQL помогает разработчикам быстро изучать и исследовать API, не перегружая кодовую базу или не спотыкаясь о cURL.

Без версии: форма возвращаемых данных полностью определяется запросом клиента, поэтому серверы становятся проще и удобнее для обобщения. Когда вы добавляете новые функции продукта, на сервер можно добавлять дополнительные поля, не затрагивая существующих клиентов. Когда вы закрываете старые функции, соответствующие поля сервера могут быть устаревшими, но продолжать работать. Этот постепенный процесс обратной совместимости устраняет необходимость в увеличивающемся номере версии.

GraphQL против REST

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

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

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

Фактически, если вы не столкнулись с какими-либо проблемами с REST, GraphQL может быть вам вообще бесполезен. Таким образом, GraphQL оказался ценным для команд, которые были ограничены традиционными REST API, которые часто возникают в приложениях со сложным UI / UX и обычно требуют нескольких конечных точек.

Заключение

Хотя GraphQL может показаться просто причудливой новой технологией, созданной Facebook, многие считают, что реализация на самом деле довольно практична.

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

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

Комментарии ()

    Написать комментарий