Создание API
Создание APIСоздание пользовательского endpoint

Создание пользовательского endpoint

В дополнение к единственному endpoint, Gato GraphQL также поддерживает пользовательские endpoints для получения и публикации данных по пользовательской схеме (содержащей лишь подмножество доступных типов) и правилам валидации пользователей, чтобы удовлетворять потребностям разных пользователей и приложений.

Можно создавать столько пользовательских endpoints, сколько необходимо.

Например, можно создать пользовательский endpoint для:

  • Конкретного клиента или пользователя по адресу /graphql/my-client/
  • Группы пользователей с расширенным доступом к функциям (например, PRO-пользователей) по адресу /graphql/pro-users/
  • Предоставления данных мобильному приложению по адресу /graphql/mobile-app/
  • Открытия доступа к стороннему API по адресу /graphql/external-api/
  • Других случаев

Редактор пользовательского Endpoint

Выполнение пользовательского endpoint в приложении

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

Доступ ко всем пользовательским endpoints

Нажав «Custom Endpoints» в меню плагина, вы увидите список всех созданных пользовательских endpoints:

Пользовательские Endpoints в панели администратора
Пользовательские Endpoints в панели администратора

Создание нового пользовательского endpoint

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

Создание нового пользовательского Endpoint

Задайте заголовок, убедитесь, что постоянная ссылка соответствует желаемой, выберите конфигурацию схемы и настройте параметры. Когда всё готово, нажмите кнопку Опубликовать, и пользовательский endpoint будет создан, используя настроенный permalink в качестве URL endpoint.

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

Custom Endpoint Overview

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

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

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

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

Приватные endpoints

Установив статус пользовательского Endpoint как приватный, доступ к endpoint получит только администратор. Это предотвращает непреднамеренную передачу данных пользователям, которые не должны иметь к ним доступ.

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

Приватный пользовательский Endpoint

Endpoints, защищённые паролем

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

Пользовательский Endpoint, защищённый паролем

При первом обращении к endpoint, защищённому паролем (будь то прямое обращение к endpoint или к его клиентам GraphiQL или Interactive Schema), пользователь видит экран с запросом пароля:

Пользовательский Endpoint, защищённый паролем: первый доступ

После того как пароль введён и проверен, пользователь получит доступ к нужному endpoint или клиенту:

Пользовательский Endpoint, защищённый паролем: после авторизации

Создание иерархии endpoints

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

Отключение пользовательского endpoint

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

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

Описание пользовательского endpoint

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

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

Клиенты endpoint

Каждый пользовательский endpoint имеет собственный набор клиентов для взаимодействия.

Клиент GraphiQL

Добавьте ?view=graphiql к endpoint для доступа к его клиенту GraphiQL:

Клиент GraphiQL пользовательского endpoint

Клиент GraphiQL также можно открыть при редактировании пользовательского Endpoint из боковой панели «Custom Endpoint Overview»:

Ссылка на клиент GraphiQL пользовательского endpoint в редакторе

Аналогично, клиент можно открыть со страницы списка пользовательских Endpoints по ссылке «GraphiQL» при наведении курсора на запись:

Ссылка на клиент GraphiQL пользовательского endpoint в списке
Ссылка на клиент GraphiQL пользовательского endpoint в списке

Чтобы отключить клиент GraphiQL, установите параметр «Expose GraphiQL client?» в значение false в редакторе пользовательского Endpoint.

Клиент Interactive Schema (Voyager)

Добавьте ?view=schema к endpoint для доступа к его клиенту Interactive Schema, чтобы визуализировать схему endpoint и взаимодействовать с ней:

Клиент Voyager пользовательского endpoint

Клиент Interactive Schema также можно открыть при редактировании пользовательского Endpoint из боковой панели «Custom Endpoint Overview»:

Ссылка на клиент Interactive Schema пользовательского endpoint в редакторе

Аналогично, клиент можно открыть со страницы списка пользовательских Endpoints по ссылке «Interactive Schema» при наведении курсора на запись:

Ссылка на клиент Interactive Schema пользовательского endpoint в списке
Ссылка на клиент Interactive Schema пользовательского endpoint в списке

Чтобы отключить клиент Interactive Schema, установите параметр «Expose the Interactive Schema client?» в значение false в редакторе пользовательского Endpoint.

Тестирование endpoint перед публикацией

Пользовательский endpoint со статусом черновик или на проверке доступен только редакторам схемы. Это даёт им возможность:

  • Выполнять GraphQL queries к нему
  • Получать доступ к клиентам GraphiQL и Voyager endpoint

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

После одобрения только тогда устанавливается статус опубликован, делая пользовательский endpoint доступным для всех.

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

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

Исходный код пользовательского endpoint


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

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

ПолеОписание
ЗаголовокЗаголовок пользовательского endpoint
Конфигурация схемыИз выпадающего списка выберите конфигурацию схемы, применяемую к пользовательскому endpoint, или одну из следующих опций:
  • "Default": используется конфигурация схемы, выбранная в настройках плагина
  • "None": пользовательский endpoint не будет ограничен
  • "Inherit from parent": использовать ту же конфигурацию схемы, что и у родительского пользовательского endpoint.
    Эта опция доступна, когда модуль "API Hierarchy" включён, и пользовательский endpoint имеет родительский запрос (выбранный в настройках документа)
ПараметрыНастройка поведения пользовательского endpoint:
  • Enabled?: включён ли пользовательский endpoint.
    Полезно отключить пользовательский endpoint, если он является родительским запросом в иерархии API
  • Expose GraphiQL client?: включить/отключить клиент GraphiQL, прикреплённый к endpoint, доступный по ?view=graphiql
  • Expose the Interactive Schema client?: включить/отключить клиент Interactive Schema, прикреплённый к endpoint, доступный по ?view=schema
  • Inherit query from ancestor(s)?: использовать тот же запрос, что и у родительского пользовательского endpoint.
    Эта опция доступна, когда модуль "API Hierarchy" включён, и пользовательский endpoint имеет родительский запрос (выбранный в настройках документа)

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

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