Ответы
Читайте статус, время, тело, заголовки, cookie и байты передачи ответа, ищите в больших телах, сравнивайте ответы и сохраняйте их.
Всё, что присылает сервер, показывается в области ответа: тело в подходящем виде, заголовки, cookie, сообщение в том виде, в каком оно пришло, его байты в hex и в передаче. Статус и время находятся в строке под строкой URL. Тела записываются на диск по мере поступления, поэтому ответ в сотни мегабайт открывается так же быстро, как маленький.

Статус, время и размер
После отправки строка под строкой URL показывает:
- статус, окрашенный по классу (2xx, 3xx, 4xx, 5xx); запрос, не получивший ответа, показывает вместо него Ошибка или Отменено;
- полосу для каждой фазы обмена, которая растёт, пока выполняется запрос;
- общее время.
Наведите указатель на строку, и откроется карточка с подробностями:
| В карточке | Что она говорит |
|---|---|
| Статус | Код состояния и пояснение. |
| Время | Общее время обмена. |
| Размер | Размер тела; пока тело поступает — сколько пришло из скольких. |
| Кодирование | Сжатие и размеры до и после декодирования, например br, 12 KB → 48 KB, либо что декодировать не удалось. |
| 3 перенаправления | Выполненные перенаправления; нажмите, чтобы увидеть статус, метод, адрес и время каждого перехода. |
| Проверки | Сколько проверок запроса пройдено. |
| Повторно использованное соединение | Запрос ушёл по соединению, оставленному открытым после предыдущего: без времени DNS, подключения и TLS. |
| TLS | Версия и протокол TLS, например TLS 1.3 · h2. Нажмите, чтобы увидеть сертификаты: субъект, Издатель, даты Действителен и Имена. Оранжевый открытый замок означает, что проверка была выключена. |
| Предложен HTTP/3 | Сервер предложил HTTP/3 через Alt-Svc; см. версию HTTP. |
| Адрес | IP-адрес и порт сервера. |
| Шкала времени | DNS, Соединить, TLS, Ожидание (до первого байта ответа) и Получение, у каждой своё время. |
Если запрос отправили повторно (по новому соединению или по HTTP/1.1), карточка объясняет почему. Если он завершился ошибкой, карточка показывает её.
Вкладки ответа
| Вкладка | Что показывает |
|---|---|
| Тело | Тело в выбранном виде. |
| События | Server-Sent Events и другие потоки событий, по событию в строке. См. WebSocket и SSE. |
| Тесты | Результаты проверок и тестов скриптов запроса с числом, например 3/4. |
| Консоль | Что записали в журнал скрипты запроса; только если скрипты выполнялись. См. Скрипты и тесты. |
| Заголовки | Заголовки ответа с числом. |
| Cookie | Отправленные и установленные cookie и хранилище cookie окна. |
| Исходный | Ответ как одно сообщение HTTP: строка состояния, заголовки, пустая строка и тело. |
| Hex | Байты тела. |
| Передача | Отправленные и полученные байты точно в том виде, в каком они прошли по соединению. |
Виды тела
Выберите вид в строке вверху вкладки Тело:
| Вид | Что показывает |
|---|---|
| Текст | Тело как оно пришло, окрашенное по типу содержимого. |
| JSON | JSON с отступами. |
| JSON-дерево | JSON в виде дерева, которое можно раскрывать и сворачивать. |
| XML | XML в виде дерева элементов, атрибутов и текста. |
| Форма | Тело URL-encoded, прочитанное как дерево. |
| MessagePack | Тело MessagePack, прочитанное как дерево. |
| Просмотр | Изображения, PDF, аудио и видео через «Быстрый просмотр». |
Любой вид доступен для любого тела, поэтому ответ с неверным типом содержимого всё равно можно прочитать как то, чем он является. Тип содержимого определяет вид, в котором открывается ответ, а Echolot запоминает вид, который вы выбрали для каждого типа тела: после того как вы выбрали JSON-дерево для одного ответа JSON, следующие откроются в дереве.
HTML и скрипты никогда не выполняются и не отображаются. Просмотр и Открыть в программе по умолчанию показывают их как текст.
Длинные строки в текстовых видах прокручиваются вбок. Нажмите кнопку переноса или выберите Вид › Переносить длинные строки, чтобы переносить их. Вид › Увеличить код (⌘+), Уменьшить код (⌘-) и Реальный размер кода (⌘0) меняют размер кода везде.
Деревья JSON и XML
Деревья показывают ключ или индекс каждого значения, его тип и значение; свёрнутый объект или массив показывает, сколько
в нём элементов. Массив из более чем 1000 элементов разбивается на диапазоны вроде [0 … 999], поэтому даже огромный
массив открывается сразу.
Наведите указатель на значение, чтобы увидеть его кнопки:
- Открыть в браузере — для значения, которое является веб-адресом;
- Скопировать значение;
- Сохранить в переменную…, которая сохраняет значение в переменную и, если хотите, обновляет его после каждой отправки. См. Захваты из ответа.
Щёлкните строку правой кнопкой, чтобы увидеть больше:
- В дереве JSON: Скопировать путь (JSONPath к значению, например
$.items[0].sku), Скопировать значение и Добавить проверку, которая добавляет на вкладку Тесты проверку, что значение равно текущему. - В дереве XML: Скопировать XPath и Скопировать значение.
Наведите указатель на значение — адрес изображения, и рядом откроется миниатюра. Изображение загружается так же, как
браузер загружает картинку: без ваших cookie и учётных данных, до 10 МБ и без записи в историю. Значения
data:image/… показываются без какого-либо запроса. Наведите на значение, похожее на дату (время Unix в секундах,
миллисекундах, микросекундах или наносекундах либо отметка времени ISO 8601), и оно покажется как читаемая дата.
Дерево XML принимает тела до 50 МБ, а Форма и MessagePack — до 64 МБ. Для больших используйте Текст и поиск.
Поиск
Нажмите ⌘F (Запрос › Найти в теле) или нажмите на лупу.
- В Текст и JSON введите, что искать. Aa учитывает регистр; .* делает запрос регулярным выражением.
Панель показывает, где вы находитесь, например
3 of 1,204. Нажмите ↩ или ⌘G для следующего совпадения и ⇧⌘G для предыдущего. Отмечается до 10 000 совпадений; если их больше, у числа появляется+. - В JSON-дерево, Форма и MessagePack панель принимает JSONPath вроде
$.items[0]и переходит к этому значению. Если там ничего нет, она сообщает Не найдено.
Нажмите Esc, чтобы закрыть панель.
Большие ответы
Echolot никогда не держит тело в памяти. Он пишет его в файл по мере поступления, а просмотрщики читают только ту часть, что на экране:
- Первые строки показываются, пока остальное ещё приходит. Пока тело загружается, карточка с подробностями показывает, сколько уже пришло.
- JSON начинает форматироваться с отступами, как только начинается тело, и следует за ним по мере роста.
- JSON-дерево строит только те строки, которые вы раскрываете.
- Поиск ищет по всему телу на диске.
Попробуйте на Catalog › Export the catalog в Alpenglow: 40 000 товаров, около 14 МБ.
Тела хранятся на диске до размера, заданного в Настройки › Хранилище › Хранить тела ответов до; сверх него удаляются давно не использованные, кроме тел, открытых во вкладках. Старый ответ, чьё тело удалено, сообщает, что тело этого ответа больше не хранится. См. Хранилище и шифрование.
Заголовки
Вкладка Заголовки перечисляет заголовки ответа в порядке их поступления. Наведите указатель на строку или выберите её и нажмите Пробел (↑ и ↓ для перехода), чтобы увидеть значение целиком, для чего нужен заголовок и что говорит его значение. Щёлкните заголовок правой кнопкой для Скопировать значение, Скопировать заголовок и Добавить проверку, которая добавляет на вкладку Тесты проверку этого заголовка.
Cookie
Вкладка Cookie состоит из трёх частей:
- Отправлен с запросом: cookie, которые ушли, и откуда взялся каждый.
- Установлен ответом: каждый
Set-Cookieс атрибутами и предупреждением, если хранилище его отклонило. - Хранится в этом окне: всё в хранилище cookie окна. Удалите одно его кнопкой или все через Очистить все.
Если для запроса выключено Отправлять и сохранять cookie, вкладка сообщает об этом. См. Cookie.
Исходный, Hex и Передача
- Исходный показывает ответ как одно сообщение: строка состояния, заголовки, пустая строка, затем декодированное тело (первые 64 МБ; на вкладке Тело есть всё).
- Hex показывает байты тела: смещения, по 16 байт в строке двумя группами и их ASCII. Выделяйте байты мышью или клавишами со стрелками и ⇧; копирование даёт пары hex или текст, если вы выделяли в столбце ASCII.
- Передача показывает байты точно так, как они прошли по соединению: выберите Отправлено или Получено. Вы видите заголовки в том виде, как они оформлены, и сжатое тело до декодирования. В каждом направлении сохраняется до 1 МБ; вкладка сообщает, если показывает только начало.
Сохранение и отправка другим
Нажмите кнопку сохранения вверху справа на вкладке Тело:
- Сохранить тело… записывает тело в файл (декодированное).
- Открыть в программе по умолчанию открывает его в приложении, которое ваш Mac использует для этого типа.
- Сохранить закодированное тело… записывает тело в том виде, в каком оно пришло, ещё сжатым; только для сжатых ответов.
- Экспортировать обмен в HAR… записывает запрос и ответ как файл HAR.
Чтобы поделиться запросом, а не ответом, используйте Запрос › Скопировать как cURL (⌥⌘C) или Запрос › Сгенерировать код… (⌥⌘G). См. Запросы HTTP.
Прошлые ответы и сравнение
Каждая отправка сохраняется в истории. Кнопка с часами и числом в конце строки под строкой URL открывает ответы этого запроса: у каждого статус, время, кто его отправил (вы, прогон или агент), длительность и размер.

- Нажмите ответ, чтобы показать его. Панель над областью ответа сообщает Прошлый ответ; Показать последний ответ возвращает обратно.
- Чтобы сравнить два ответа, покажите один, затем наведите указатель на другой в списке и нажмите его кнопку сравнения или нажмите Сравнить с последним на панели Прошлый ответ. Сравнение показывает, что добавлено и удалено.
- Очистить историю этого запроса… в меню списка удаляет историю этого запроса.
Историю всего рабочего пространства см. в разделе История.
Если запрос не удался
Если ответ не пришёл, область показывает ошибку, например Время ожидания запроса истекло, и Повторить. Могут появиться ещё две кнопки:
- Просмотреть скрипты…, когда скрипты запроса пришли не из Echolot и требуют вашего доверия, прежде чем выполняться. См. Скрипты и тесты.
- Разрешить доступ… в версии из App Store, когда запрос называет файл, который приложению пока нельзя читать.
Настройки запроса
Выбирайте для запроса версию HTTP, перенаправления, cookie, распаковку, проверку TLS, тайм-аут и отправку как есть, а также настраивайте прокси и сертификаты.
Динамические значения
Заполняйте запросы значениями, вычисляемыми при отправке: отметками времени, UUID, хешами, кодировками, файлами и значениями из других запросов и их ответов.

