Echolot
Запросы

Ответы

Читайте статус, время, тело, заголовки, cookie и байты передачи ответа, ищите в больших телах, сравнивайте ответы и сохраняйте их.

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

Ответ List products в виде JSON-дерева: над значением наведён указатель, видны кнопки «Скопировать значение» и «Сохранить в переменную»

Статус, время и размер

После отправки строка под строкой 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Байты тела.
ПередачаОтправленные и полученные байты точно в том виде, в каком они прошли по соединению.

Виды тела

Выберите вид в строке вверху вкладки Тело:

ВидЧто показывает
ТекстТело как оно пришло, окрашенное по типу содержимого.
JSONJSON с отступами.
JSON-деревоJSON в виде дерева, которое можно раскрывать и сворачивать.
XMLXML в виде дерева элементов, атрибутов и текста.
ФормаТело 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 открывает ответы этого запроса: у каждого статус, время, кто его отправил (вы, прогон или агент), длительность и размер.

Всплывающая панель истории ответов List products со списком прошлых ответов, их статусом, временем, источником, длительностью и размером
  • Нажмите ответ, чтобы показать его. Панель над областью ответа сообщает Прошлый ответ; Показать последний ответ возвращает обратно.
  • Чтобы сравнить два ответа, покажите один, затем наведите указатель на другой в списке и нажмите его кнопку сравнения или нажмите Сравнить с последним на панели Прошлый ответ. Сравнение показывает, что добавлено и удалено.
  • Очистить историю этого запроса… в меню списка удаляет историю этого запроса.

Историю всего рабочего пространства см. в разделе История.

Если запрос не удался

Если ответ не пришёл, область показывает ошибку, например Время ожидания запроса истекло, и Повторить. Могут появиться ещё две кнопки:

  • Просмотреть скрипты…, когда скрипты запроса пришли не из Echolot и требуют вашего доверия, прежде чем выполняться. См. Скрипты и тесты.
  • Разрешить доступ… в версии из App Store, когда запрос называет файл, который приложению пока нельзя читать.

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