Тип тела выбирается выпадающим списком в левом верхнем углу вкладки 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 или когда фокус уходит из неё.


От содержимого таблицы зависит кодирование:
- если ни у одного включённого поля тип не 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 — в разделе Импорт и экспорт.