GraphQL с Drupal 8: Все, что вам нужно знать (с примерами!)
Опубликовано: 2019-12-17GraphQL общается с Drupal по протоколу HTTP, и выходные данные более структурированы, чем когда-либо прежде!
Сегодня хороший клиентский опыт начинается с отличного контента. Контент, доступный повсюду. Благодаря инициативе Drupal 8, ориентированной на API, контент, которым управляет Drupal, может легко использоваться другими системами через HTTP. REST (передача репрезентативного состояния) обеспечивает стандарт проектирования для API. Однако по мере того, как клиентские приложения становятся все более сложными и сложными, разработчикам требуется более современное и эффективное решение.

GraphQL родился из потребности в более гибком и мощном взаимодействии клиент-сервер. Это сложный язык запросов и машина для выполнения. В 2012 году Facebook создал для него спецификацию, в которой описываются его возможности и требования к моделям данных для безголовых приложений.
Что такое GraphQL?
GraphQL - это адаптивный стандарт для API-интерфейсов, который предоставляет среду выполнения для выполнения этих запросов. GraphQL предоставляет полную и разумную информацию о вашем API. Он разработан с идеологией «Просите то, что вам нужно, и получите именно это». Это дает клиенту возможность получить точный ответ, который ему нужен, от API, не больше и не меньше.
Преимущества GraphQL
Некоторые из многих преимуществ использования GraphQL для Drupal -
- Более быстрая разработка интерфейса
Быстро обращайте внимание на приложения, не дожидаясь появления новых конечных точек серверной части. Улучшите выборку данных и обслуживание кода, придавая данным нужную форму. - Спросите, что вам нужно, и получите именно это
Он дает точный ответ, о котором просил клиент. Всегда возвращает предсказуемый результат. Приложения, использующие GraphQL, также стабильны, потому что приложение контролирует данные, которые оно получает, а не сервер. - Используйте ваши существующие данные
GraphQL можно использовать с любой существующей инфраструктурой, например, REST, SOAP, существующей базой данных или чем-либо еще. Он позволяет запрашивать все данные в одном запросе и обеспечивает четкий предсказуемый ответ. - Меньше байтов и обходов
Используя GraphQL, можно получить все необходимые данные с помощью одного запроса. Это делает
приложение быстрее.

GraphQL с Drupal 8
REST против JSON: API против GraphQL
Если мы сравним эти три по эффективности запросов, JSON: API и GraphQL превосходны. Потому что в одном запросе JSON: API и GraphQl могут обслуживать все необходимые ответы. В случае JSON: API иногда нам нужно адаптировать ответ, но когда дело доходит до GraphQL, он обслуживает только то, что нам нужно. REST работает медленнее по сравнению с ними, потому что для удовлетворения общих потребностей требуется несколько запросов.
С точки зрения простоты эксплуатации и реализации, REST - самый простой, он существует уже довольно давно. JSON: API также работает "из коробки" с CDN и обратными прокси. Для GraphQL необходима дополнительная инфраструктура и клиентские библиотеки для ее реализации.
Использовать веб-кеш в REST и JSON: API проще, чем в GraphQL. В GraphQL есть только одна конечная точка (чаще всего конечная точка HTTP POST), куда отправляются все запросы. Поскольку каждый запрос может быть разным, использовать этот тип кеширования сложнее.
Спецификация Drupal GraphQL автоматически поддерживает массовые / пакетные операции для уже реализованных мутаций, тогда как спецификация JSON: API не поддерживает. Возможность выполнять операции пакетной записи может быть важной.
Установка GraphQL для Drupal 8
Модуль Drupal GraphQL поддерживает все спецификации GraphQL и может использоваться для построения и предоставления схем GraphQL. Последний альфа-выпуск модуля Drupal 8 в версии 8.x-4 предлагает модулям Drupal возможность расширять схему с помощью подключаемого модуля.
Здесь вы можете установить модуль Drupal GraphQL - https://www.drupal.org/project/graphql
Вы можете установить с помощью команды композитора.
композитор требует 'drupal / graphql: ^ 3.0'
Он предоставит вам два модуля GraphQL Core и GraphQL . Вам необходимо включить оба модуля. Вы можете включить его, используя drush, например
drush en graphql drush en graphql_core
Запросы с Drupal GraphQL
Модуль Drupal GraphQL предоставляет инструмент под названием GraphiQL . Это мощный инструмент с интерактивным пользовательским интерфейсом с такими функциями, как автозаполнение. Используя этот инструмент, вы можете запускать запросы и получать результаты. Перейдите к интерфейсу - « / graphql / explorer ».

Вы получите интерфейс, который выглядит так -

Пользовательский интерфейс GraphiQL
На левой боковой панели этого пользовательского интерфейса вы можете написать запрос, а на правой стороне вы увидите результаты в виде вывода в формате JSON. Нажав на « Документы» в правом верхнем углу, вы получите документацию по доступным запросам. Раздел « Переменные запроса » на левой нижней панели можно использовать для передачи переменных запроса.
Примеры
1. запросы узлов

Drupal GraphQL - запросы узлов
2. Запрос таксономий

Drupal GraphQL - Запрос таксономий
3. Запрос маршрутов

Drupal GraphQL - запросы маршрутов
4. Фрагменты запроса

Drupal GraphQL - Фрагменты запросов
5. фильтры

Drupal GraphQL - Фильтры
6. Фильтры с соединением

Drupal GraphQL - фильтры с конъюнкцией
Другие доступные операторы:
- РАВНЫЙ
- НЕ РАВНЫЙ
- МЕНЬШЕ ЧЕМ
- SMALLER_THAN_OR_EQUAL
- ЛУЧШЕ ЧЕМ
- GREATER_THAN_OR_EQUAL
- В
- НЕ В
- КАК
- НЕ КАК
- МЕЖДУ
- NOT_BETWEEN
- НУЛЕВОЙ
- IS_NOT_NULL
Союзы могут иметь два значения
- И
- ИЛИ
Вы также можете использовать группы для написания более сложных запросов.
7. переменные GraphQL

Drupal GraphQL - Переменные
Мутации
В GraphQL мутация - это терминология, используемая всякий раз, когда вы хотите добавить, изменить или удалить данные, хранящиеся на сервере. В этом случае Drupal. К сожалению, из-за некоторых технических требований GraphQL в модуле нет возможности выполнять стандартные мутации.
Пример кода для создания, удаления, обновления и загрузки файлов можно найти здесь: https://github.com/drupal-graphql/graphql-examples
Пример мутации:

Drupal GraphQL - Пример мутации
Drupal GraphQL с Twig
Использование Drupal GraphQL с Twig может значительно улучшить производительность вашего сайта. Вот как это сделать. Когда вы вводите данные в шаблон Twig, вы можете получить все необходимые данные с помощью одного вызова API. Более того, поскольку данные, которые он получает, контролирует клиент, а не сервер, это ускоряет процесс.
Чтобы использовать Drupal GraphQL с Twig, нам понадобится модуль GraphQL Twig. Чтобы скачать и включить его, используйте следующие команды:
композитору требуется 'drupal / graphql_twig: ^ 1.0' drush en graphql_twig
И затем вы можете использовать запрос GraphQL на своем веб-сайте, например
{#graphql
запрос {
admin: userById (id: "1") {
uid
название
}
user: currentUserContext {
uid
}
}
#}Вы получите данные ответа в переменной GraphQL.
