Все разделы

Протоколы

GraphQL

На этой странице

GraphQL-запрос в Tetiva строится вокруг схемы: приложение делает интроспекцию эндпоинта, а дальше подсказывает поля, генерирует пример операции и подсвечивает ошибки прямо в редакторе. Отправляется обычный POST с JSON-телом query / variables / operationName, поэтому всё, что вы знаете про заголовки и авторизацию в HTTP, работает и здесь.

Загрузка схемы#

Введите адрес эндпоинта (https://api.example.com/graphql) и нажмите Load Schema — Tetiva отправит интроспекционный запрос и разложит результат на запросы, мутации и типы. Кнопка с круговой стрелкой перечитывает схему после деплоя, ошибка интроспекции показывается строкой рядом с кнопкой.

Два важных нюанса. Первый: в интроспекционный запрос уходят только включённые строки вкладки Headers — если схема закрыта токеном, положите Authorization именно туда, значения со вкладки Auth применяются при отправке самого запроса, но не при загрузке схемы. Второй: интроспекция забирает корни Query и Mutation, поэтому подписки в список операций не попадают.

Operation Selector#

Селектор слева от кнопок показывает все операции схемы, сгруппированные на Queries и Mutations, с поиском по имени. Выбор операции делает три вещи сразу: подставляет имя в запрос, генерирует пример тела и заполняет переменные.

Пример строится по схеме на глубину три уровня вложенности: аргументы операции выносятся в объявления переменных ($id: ID!) и подставляются в вызов, скалярные и enum-поля выписываются целиком, вложенные объекты разворачиваются до предела глубины, а на последнем уровне остаются только скаляры. Для union- и interface-типов генерируются ветки ... on Type. Значения переменных заполняются заглушками по типам — перед отправкой замените их осмысленными.

Имя выбранной операции сохраняется в запросе и уходит на сервер как operationName — это важно, если в теле лежит несколько именованных операций.

Редактор запроса и переменных#

Редактор разделён по вертикали: сверху запрос, снизу сворачиваемая панель Variables с JSON. Обе части сохраняются вместе с запросом.

Tetiva
v0.17.0
GraphQL-редактор Tetiva: запрос, панель Variables и ответ сервераGraphQL-редактор Tetiva: запрос, панель Variables и ответ сервера
Схема загружена — на вкладках счётчики Query и Schema, переменные в отдельной панели

Когда схема загружена, в запросе работает автодополнение полей, типов и аргументов, а невалидные поля подчёркиваются линтером — обе функции берут данные из той же схемы, что показывает Operation Selector. Без загруженной схемы редактор остаётся обычным текстовым полем с подсветкой.

Cmd/Ctrl+Click по типу или полю открывает его во вкладке Schema. Пока клавиша зажата, токены подчёркиваются — видно, куда можно провалиться.

В тексте запроса и в переменных подставляются переменные окружения: {{tenant_id}} в JSON-переменных заменится перед отправкой так же, как в URL. См. окружения и переменные.

Браузер схемы#

Вкладка Schema переключается между двумя режимами. Browse — интерактивный обход: список операций, детали выбранной (аргументы и возвращаемый тип), переход по полям к их типам. SDL — та же схема текстом, с поиском по определениям. Поле поиска фильтрует и список операций, и поля текущего типа.

Кнопка Open in Window выносит схему в отдельное окно — удобно, когда запрос длинный и переключаться на вкладку каждый раз дорого.

Отправка и ответ#

Cmd/Ctrl+Enter отправляет запрос, Cmd/Ctrl+S сохраняет его. Тело собирается как JSON с полями query, variables и operationName; Content-Type: application/json выставляется автоматически, к нему добавляются включённые заголовки и результат вкладки Auth — см. авторизацию.

Ответ разложен на вкладки Data, Errors, Headers и Tests. Разделение важно: GraphQL-сервер обычно отвечает HTTP 200 даже при ошибке резолвера, поэтому смотреть надо не только на статус — если в ответе есть массив errors, на вкладке Errors загорается индикатор. Вкладку Tests наполняют скрипты, а поиск по телу ответа описан в просмотре ответа.

обновлено