Создание API
Создание APIСоздание сохранённого запроса

Создание сохранённого запроса

Сохранённый запрос — это комбинация GraphQL и REST API: это обычный GraphQL-запрос, опубликованный на сайте и доступный по собственному URL, аналогично REST-эндпоинту.

Например, мы можем предоставлять данные для сайта через следующие сохранённые queries:

  • /graphql-query/homepage-posts
  • /graphql-query/user-widget
  • /graphql-query/post-content и выполнять его, передав ID записи: ?post=1
  • /graphql-query/post-content/es для перевода содержимого записи на испанский язык
  • Другие

Редактор сохранённых запросов

Выполнение сохранённого запроса

После публикации сохранённого запроса его можно выполнить по постоянной ссылке (permalink).

Сохранённый запрос можно выполнить непосредственно в браузере, поскольку он доступен через GET, и мы получим запрошенные данные в формате JSON:

Выполнение сохранённого запроса в браузере

Выполнение сохранённого запроса в приложении

Следуйте инструкциям в руководстве Подключение к серверу GraphQL из клиента.

Просмотр всех сохранённых запросов

Нажав «Persisted Queries» в меню плагина, вы увидите список всех созданных сохранённых запросов:

Сохранённые запросы в панели администратора
Сохранённые запросы в панели администратора

Создание нового сохранённого запроса

Нажмите кнопку «Add New GraphQL persisted query», чтобы открыть редактор WordPress:

Создание сохранённого запроса

Укажите заголовок и убедитесь, что постоянная ссылка соответствует ожидаемой, введите GraphQL-запрос, выберите конфигурацию схемы и настройте параметры. Когда всё будет готово, нажмите кнопку Publish, и постоянная ссылка станет эндпоинтом сохранённого запроса.

Ссылка на эндпоинт (и на исходный код) отображается в боковой панели «Persisted Query Endpoint Overview»:

Persisted Query Endpoint Overview

По умолчанию эндпоинт сохранённого запроса имеет путь /graphql-query/, и это значение можно изменить в Настройках:

Настройки сохранённых запросов
Настройки сохранённых запросов

Редактор запросов

Клиент GraphiQL в редакторе — это место для ввода сохранённого GraphQL-запроса:

Клиент GraphiQL сохранённого запроса

Редактор поставляется с дополнением Explorer, которое позволяет составлять запрос, нажимая на поля в левой боковой панели. Нажатие кнопки «Run» выполняет запрос для предварительного просмотра ответа:

Составление сохранённого запроса с помощью Explorer

Конфигурация схемы

То, кто может получить доступ к полям, запрошенным в сохранённом запросе, определяется в конфигурации схемы.

Поэтому необходимо создать конфигурацию схемы, а затем выбрать её из выпадающего списка (или не использовать ни одну, или использовать стандартную):

Выбор конфигурации схемы

Приватные сохранённые запросы

Установив статус сохранённого запроса как private, эндпоинт будет доступен только пользователю-администратору. Это предотвращает непреднамеренный доступ к данным со стороны пользователей, которым он не должен быть открыт.

Например, можно создать приватные сохранённые queries для управления приложением, например, для получения данных с целью формирования отчётов по метрикам.

Приватный сохранённый запрос

Сохранённые запросы с защитой паролем

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

Сохранённый запрос с защитой паролем

При первом обращении к сохранённому запросу с защитой паролем появляется экран с запросом пароля:

Сохранённый запрос с защитой паролем: первый доступ

Только после ввода и подтверждения пароля пользователь получит доступ к нужному эндпоинту.

Создание динамического сохранённого запроса через параметры URL

Значение каждой переменной можно задать через параметр URL (с именем переменной) при выполнении сохранённого запроса. Если включена опция «Do URL params override variables?», параметр URL будет иметь приоритет. В противном случае приоритет будет у значения, определённого в словаре переменных (если оно задано).

Например, в этом запросе количество результатов управляется переменной $limit со значением по умолчанию 3:

Использование переменных в сохранённом запросе

При выполнении этого сохранённого запроса передача ?limit=5 приведёт к тому, что запрос вернёт 5 результатов вместо этого:

Переопределение значений переменных в сохранённом запросе

Создание иерархии сохранённых запросов

Прочитайте инструкции по созданию иерархии API.

Отключение сохранённого запроса

В параметрах установите «Enabled» в значение false, чтобы отключить сохранённый запрос.

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

Описание сохранённого запроса

Используйте поле «Excerpt» на панели настроек документа, чтобы добавить описание к сохранённому запросу.

Дополнительную информацию можно найти в руководстве Добавление описания к API.

Тестирование сохранённого запроса перед публикацией

Сохранённый запрос со статусом draft (черновик) или pending (на рассмотрении) доступен только редакторам схемы.

Таким образом, можно создать сохранённый запрос, назначить ему конфигурацию схемы, опубликовать его как draft или pending и протестировать (например, проверив, что правила контроля доступа настроены корректно).

После утверждения устанавливаем статус publish, делая сохранённый запрос доступным для всех.

Просмотр исходного кода

Добавив ?view=source к эндпоинту, можно увидеть конфигурацию сохранённого запроса (при условии, что пользователь авторизован и его роль имеет соответствующий доступ):

Исходный код сохранённого запроса


Настройка в редакторе WordPress

Ниже перечислены поля в теле редактора:

ПолеОписание
TitleЗаголовок сохранённого запроса
GraphiQL clientРедактор для написания и выполнения GraphQL-запроса:
  • Введите запрос в текстовую область
  • Объявите переменные внутри запроса и укажите их значения в поле переменных внизу
  • Нажмите кнопку «Run» для выполнения запроса
  • Получите результаты в поле справа
  • Нажмите «Docs» для просмотра информации о схеме
Explorer (отображается только если модуль GraphiQL Explorer включён) позволяет кликать по полям, и они автоматически добавляются в запрос
Schema configurationИз выпадающего списка выберите конфигурацию схемы, применяемую к сохранённому запросу, или один из следующих вариантов:
  • "Default": используется конфигурация схемы, выбранная в настройках плагина
  • "None": сохранённый запрос будет без ограничений
  • "Inherit from parent": использовать ту же конфигурацию схемы, что и у родительского сохранённого запроса.
    Этот вариант доступен, если модуль API Hierarchy включён и сохранённый запрос имеет родительский запрос (выбранный в настройках документа)
OptionsНастройка поведения сохранённого запроса:
  • Enabled?: включён ли сохранённый запрос.
    Полезно отключить сохранённый запрос, если он является родительским в иерархии API
  • Do URL params override variables?: разрешить параметрам URL переопределять значения переменных, определённых в клиенте GraphiQL
  • Inherit query from ancestor(s)?: использовать тот же запрос, что и у родительского сохранённого запроса.
    Этот вариант доступен, если модуль API Hierarchy включён и сохранённый запрос имеет родительский запрос (выбранный в настройках документа)

Ниже перечислены поля в настройках документа:

ПолеОписание
PermalinkЭндпоинт, по которому будет доступен сохранённый запрос
CategoriesПозволяет категоризировать сохранённый запрос.
Например: mobile, app и т.д.
ExcerptОписание сохранённого запроса.
Это поле доступно, если модуль Excerpt as Description включён
Page attributesВыбор родительского сохранённого запроса.
Это поле доступно, если модуль API Hierarchy включён