Все разделы

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

Просмотр ответа

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

Ответ открывается в правой панели сразу после отправки: сверху — строка со статусом, временем и размером, ниже — четыре вкладки: Body, Headers, Cookies и Tests. Тело подсвечивается по Content-Type, JSON форматируется автоматически, поиск идёт по всему документу, а бинарные ответы не рендерятся в редакторе — их предлагается сохранить в файл. Каждое выполнение попадает в историю рабочего пространства, поэтому предыдущий ответ не теряется при следующей отправке, а кнопка «Сравнить» показывает, что между ними изменилось.

Строка статуса#

Код и текст статуса окрашены по классу: 2xx — зелёный, 3xx — синий, 4xx — оранжевый, 5xx — красный. Рядом — длительность в миллисекундах, разница с прошлой отправкой (+120 или −40: на столько миллисекунд медленнее или быстрее) и размер тела (B, KB или MB). Пока запрос летит, вместо ответа идёт счётчик секунд и кнопка Cancel. Она обрывает сам вызов: сервер видит, что клиент ушёл, post-скрипт не запускается, в историю ничего не пишется, а переменные, которые успел поменять pre-скрипт, не сохраняются. Если ответа не будет вовсе (DNS, TLS, таймаут), панель покажет карточку ошибки: заголовок, подробность и список подсказок, что проверить. Такая же карточка с заголовком Request not sent появляется, если упал pre-скрипт, — см. Скрипты.

Body#

Тело открывается в редакторе только для чтения. Язык подсветки выбирается по Content-Type: json, xml, html, всё остальное — обычный текст. JSON переформатируется с отступом в два пробела; если тело не разбирается как JSON, оно показывается как пришло, без «починки».

Копирование:

  • кнопка с иконкой копирования в правом углу панели вкладок — забирает тело целиком;
  • правый клик по телу — Copy Body и Select All;
  • Cmd/Ctrl + A выделяет весь документ, а не только видимую часть, после чего Cmd/Ctrl + C копирует его полностью.

Перенос строк и размер шрифта редактора настраиваются в настройках и действуют на все редакторы приложения.

Поиск по телу#

Поле Search появляется в правой части панели вкладок, когда открыт Body. Совпадения подсвечиваются по мере ввода, а счётчик рядом с полем показывает, на каком вы, — 2/5 или No matches; в длинном теле текущее совпадение не уезжает с экрана. Enter — к следующему, Shift + Enter — к предыдущему, Escape очищает поиск и возвращает в тело. Стрелки рядом с полем делают то же самое мышью.

Cmd/Ctrl + F после клика по телу ставит курсор в это поле, а в остальных местах — в поиск по коллекциям в боковой панели. Полный список — на странице Горячие клавиши.

Headers, Cookies, Tests#

Headers — таблица «ключ — значение» со счётчиком в заголовке вкладки; заголовок, пришедший несколько раз, занимает столько же строк.

Tetiva
v1.3.1
Панель ответа Tetiva с открытой вкладкой Headers: таблица заголовков ответаПанель ответа Tetiva с открытой вкладкой Headers: таблица заголовков ответа
Строка статуса — код, время и размер; ниже заголовки ответа со счётчиком на вкладке

Cookies показывает Set-Cookie из этого ответа и cookie, которые ушли на этот адрес из хранилища рабочего пространства. Подробнее про jar — в HTTP-запросах.

Tests собирает результаты pm.test, вывод console.log обеих фаз и ошибки скриптов. Как это писать — на странице Скрипты.

Большие ответы#

Тело читается до 50 МБ; всё, что сверх этого, отбрасывается. HTTP-запрос ограничен 30 секундами и десятью редиректами.

Что делать с ответами в сотни килобайт:

  • искать полем Search, а не листать — редактор рендерит только видимый экран, поиск идёт по всему документу;
  • проверять структуру не глазами, а pm.test в post-скрипте — вкладка Tests скажет «прошло/не прошло» одним взглядом;
  • выключить перенос строк в настройках, если ответ — одна длинная строка.

Бинарные ответы#

Ответ считается бинарным, если так говорит Content-Type (изображения, аудио, видео, шрифты и большинство подтипов application/*) или если пришёл Content-Disposition: attachment. Текстовые форматы при этом не страдают: text/*, application/json, application/xml, а также суффиксы +json и +xml (например, image/svg+xml) остаются текстом.

Такое тело в редактор не попадает. Вместо него панель показывает тип, размер и кнопку Save to file: открывается системный диалог сохранения, имя файла подставляется из Content-Disposition (включая filename* в RFC 5987) или собирается из расширения по типу содержимого.

Примеры ответов#

Ответ на HTTP-, GraphQL- или gRPC-запрос можно оставить как пример: кнопка «В примеры» в строке статуса спросит имя и предложит статус, например 200 OK. Примеры запроса собраны на его вкладке Examples. Там их открывают, правят и удаляют, а кнопка New example создаёт пустой. Несохранённые правки примера не пропадают, если перейти на другую вкладку или в другое окно. Тело — до 256 КБ, бинарный ответ сохранить нельзя, а примеры бывают только у сохранённого запроса.

Заголовки с учётными данными — Set-Cookie, Authorization, Proxy-Authorization и подобные — при сохранении маскируются. Если в примере всё равно найдётся что-то похожее на секрет, приложение попросит подтвердить сохранение: «В примере могут быть секреты».

Примеры синхронизируются между вашими устройствами и с командой. Для этого нужен сервер 0.19; Tetiva Cloud на нём уже работает, а старый или свой сервер без поддержки держит примеры на устройстве, пока его не обновят. Клиенты 1.1.1 и старше примеров не видят. Импорт и экспорт Postman переносят их в поле response (см. Импорт и экспорт), а на опубликованной странице они показаны у каждого запроса.

Сравнение ответов#

Кнопка «Сравнить» в строке статуса HTTP-, GraphQL- или unary gRPC-ответа показывает, что изменилось с прошлой отправки запроса. Стрелка рядом открывает последние десять отправок и сохранённые примеры запроса — сравнить можно с любым из них. Сравнение открывается на вкладках «Тело», «Заголовки» и «Запрос» (у gRPC вместо заголовков — «Метаданные»), в режиме «Две колонки» или «Одна колонка»; в узком окне сразу в одну. Alt + ↑ и Alt + ↓ (⌥↑ и ⌥↓ на macOS) переходят между изменениями.

«Нормализовать JSON» сортирует ключи и не учитывает метки времени, Date и X-Request-Id. У секретных заголовков и query-параметров видно только, отправлялись ли они, значений нет. Двоичные тела и тела больше 1 МБ не сравниваются, но заголовки и запрос сравниваются и для них.

В истории выделите две записи с зажатым Cmd (Ctrl на Windows и Linux) и нажмите «Сравнить»: запросы и ответы встанут рядом. А иконка «Сравнить с текущим ответом», которая появляется при наведении на запись, сравнивает запись с текущим ответом её запроса.

История запросов#

Каждое выполнение записывается в историю рабочего пространства — секция «История» в левой панели. Записи сгруппированы по датам: «Сегодня», «Вчера», «На этой неделе», «Раньше». Список приходит страницами по 200 записей — кнопка «Загрузить ещё» внизу подгружает более старые, общий объём истории ничем не ограничен. Есть поиск по подстроке URL и фильтры по протоколу (HTTP, gRPC, GraphQL, WS) и классу статуса (2xx, 3xx, 4xx, 5xx, ошибка).

Клик по записи открывает её в режиме чтения: вкладки «Запрос», «Ответ» и «Ошибка», если запрос упал. Иконка часов в строке URL открывает историю, отфильтрованную по текущему запросу.

У WebSocket-записи в истории лежит рукопожатие: код 101 при успехе или тот статус, который вернуло отказавшее (чаще всего 401 или 403), заголовки запроса в том виде, в каком их собрало приложение, заголовки ответа и время подключения. Сообщения сессии туда не попадают — см. WebSocket.

Кнопка «Повторить» создаёт черновик из записи, вкладка называется Replay: <адрес>; черновик можно поправить и отправить или сохранить в коллекцию, а плашка над ним предупреждает, что авторизация и заголовки с учётными данными в него не попали. Скрипты и авторизация не восстанавливаются, а учётные данные вырезаются намеренно: у черновика тип авторизации None, из него убраны все заголовки с учётными данными (Authorization, Cookie, X-API-Key, X-Auth-Token и подобные), а из адреса — query-параметры с именами вроде token или api_key и те, что добавила авторизация. В записях, сделанных начиная с версии 1.3, вырезается и заголовок, в котором ключ API ушёл под своим именем, например appid. История хранит запрос в том виде, в каком он собран до отправки, а не копию с провода: cookie из jar, заголовок Digest и подпись AWS добавляются позже, а у GraphQL-записи остаётся текст запроса до подстановки переменных — см. Авторизацию. Отдельную запись удаляет иконка корзины на наведении, всю историю рабочего пространства — «Очистить всю историю» в шапке секции.

обновлено