Все разделы

Основные возможности

Тело запроса

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

Тип тела выбирается выпадающим списком в левом верхнем углу вкладки Body. Вариантов шесть: None, JSON, XML, Raw, Form Data и Binary. Выбор типа делает три вещи сразу — переключает редактор, задаёт кодирование при отправке и прописывает заголовок Content-Type. Переключение между типами не стирает то, что вы уже написали.

Текстовые типы: JSON, XML и Raw#

JSON, XML и Raw — один и тот же редактор CodeMirror с разной подсветкой: JSON и XML разбираются по грамматике, Raw остаётся обычным текстом. Во всех трёх работает подсветка {{переменных}}, автодополнение и подсказка при наведении — см. Окружения и переменные.

Кнопка Format появляется для JSON и XML и переформатирует документ с отступами. Поле поиска справа доступно и для Raw: Enter переходит к следующему совпадению, Shift+Enter — к предыдущему, Esc очищает запрос.

В JSON разрешены комментарии — и строчные //, и блочные. Перед отправкой они вырезаются, так что на сервер уходит валидный JSON, но в истории запрос сохраняется ровно в том виде, в каком вы его написали. Удобно держать закомментированный вариант полей рядом с рабочим.

Отдельных режимов YAML и HTML нет. Такие тела отправляются как Raw: выберите Raw и пропишите нужный Content-Type во вкладке Headers вручную.

Form Data#

Form Data — таблица полей: флажок «включено», тип, ключ и значение. Тип поля переключается между Text и File; для File вместо поля значения появляется кнопка Browse, открывающая системный диалог выбора файла. Новая строка сохраняется по Enter или когда фокус уходит из неё.

Tetiva
v0.17.0
Тело запроса типа Form Data в Tetiva: текстовое поле, файловое поле и выключенная строкаТело запроса типа Form Data в Tetiva: текстовое поле, файловое поле и выключенная строка
Файловое поле переводит тело в multipart/form-data; выключенная строка в отправку не попадёт

От содержимого таблицы зависит кодирование:

  • если ни у одного включённого поля тип не File, тело собирается как application/x-www-form-urlencoded;
  • как только появляется хотя бы одно включённое файловое поле с непустым ключом, тело собирается как multipart/form-data с автоматически сгенерированной границей.

Выключенные строки и строки с пустым ключом в отправку не попадают ни в одном из режимов. Путь к файлу должен быть абсолютным и не содержать ..; если файла нет на месте, запрос завершится ошибкой, а не отправится с пустой частью.

Binary#

Binary отправляет файл как есть, без обёрток. Кнопка Select File открывает системный диалог, выбранный файл показывается именем и полным путём, крестик его снимает.

Требования к пути те же, что и для файловых полей формы: абсолютный, без ... В истории такой запрос сохраняется как [binary: /путь/к/файлу] — сами байты в базу не пишутся.

Смена типа не теряет данные#

JSON, XML и Raw — одна текстовая семья: переключение между ними просто меняет разбор и подсветку, текст остаётся на месте. Это тот случай, когда достаточно поменять тип, чтобы отправить тот же документ с другим Content-Type.

Переход через границу семьи — из текста в Form Data или Binary и обратно — сохраняет черновик. Tetiva запоминает содержимое каждого типа отдельно для каждого запроса и восстанавливает его при возврате: набранный JSON никуда не денется, пока вы ходили в форму и обратно. Черновики живут в памяти приложения, то есть до его перезапуска; в базу сохраняется только тело текущего выбранного типа.

Content-Type#

При выборе типа Tetiva сама прописывает заголовок во вкладке Headers: application/json для JSON, application/xml для XML, application/x-www-form-urlencoded для Form Data, application/octet-stream для Binary. Для Raw и None строка заголовка, наоборот, удаляется.

Два следствия стоит помнить. Первое: заголовок перезаписывается при каждой смене типа, поэтому свой Content-Type — скажем, application/vnd.api+json — вписывайте после того, как выбрали тип, а не до. Второе: если во вкладке Headers заголовка нет вообще, бэкенд подставит значение по типу тела при отправке. Для multipart значение всегда вычисляется в момент отправки — вместе с границей, руками её не задать.

Что происходит с телом дальше — подстановка переменных, pre-скрипт, авторизация — описано в разделах HTTP-запросы и Авторизация. Отправленное тело целиком видно в истории, а перенос запросов из Postman — в разделе Импорт и экспорт.

обновлено