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

Выполнение пользовательского endpoint в приложении
Пожалуйста, следуйте инструкциям руководства Подключение к серверу GraphQL из клиента.
Доступ ко всем пользовательским endpoints
Нажав «Custom Endpoints» в меню плагина, вы увидите список всех созданных пользовательских endpoints:

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

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

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

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

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

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

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

Создание иерархии endpoints
Пожалуйста, прочитайте инструкции по созданию иерархии API.
Отключение пользовательского endpoint
В параметрах установите «Enabled» в значение false, чтобы отключить пользовательский endpoint.
Эта функция может быть полезна, когда пользовательский endpoint является частью иерархии API, обеспечивая общее поведение для дочерних пользовательских endpoints, но при этом не требуя собственного выполнения.
Описание пользовательского endpoint
Используйте поле «Excerpt» на панели настроек документа, чтобы добавить описание к пользовательскому endpoint.
Дополнительную информацию можно найти в руководстве Добавление описания к API.
Клиенты endpoint
Каждый пользовательский endpoint имеет собственный набор клиентов для взаимодействия.
Клиент GraphiQL
Добавьте ?view=graphiql к endpoint для доступа к его клиенту GraphiQL:

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

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

Чтобы отключить клиент GraphiQL, установите параметр «Expose GraphiQL client?» в значение false в редакторе пользовательского Endpoint.
Клиент Interactive Schema (Voyager)
Добавьте ?view=schema к endpoint для доступа к его клиенту Interactive Schema, чтобы визуализировать схему endpoint и взаимодействовать с ней:

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

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

Чтобы отключить клиент Interactive Schema, установите параметр «Expose the Interactive Schema client?» в значение false в редакторе пользовательского Endpoint.
Тестирование endpoint перед публикацией
Пользовательский endpoint со статусом черновик или на проверке доступен только редакторам схемы. Это даёт им возможность:
- Выполнять GraphQL queries к нему
- Получать доступ к клиентам GraphiQL и Voyager endpoint
Таким образом, можно создать пользовательский endpoint, назначить ему конфигурацию схемы, опубликовать его как черновик или на проверке и протестировать (например, убедившись, что правила контроля доступа настроены правильно).
После одобрения только тогда устанавливается статус опубликован, делая пользовательский endpoint доступным для всех.
Просмотр исходного кода
Добавив ?view=source к endpoint, вы увидите его конфигурацию (при условии, что пользователь авторизован и роль пользователя имеет к ней доступ):

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