レスポンス
レスポンスのステータス、時間、ボディ、ヘッダー、Cookie、通信上のバイトを読み取り、大きなボディを検索し、レスポンスを比較して保存します。
サーバが返したものは、すべてレスポンスペインに表示されます。ボディは適した表示で、そのほかにヘッダー、Cookie、届いたままのメッセージ、16進表示のバイト、通信上のバイトがあります。 ステータスと時間は、URLバーの下の行にあります。ボディは届くそばからディスクに書き込まれるため、数百メガバイトのレスポンスも、小さなレスポンスと同じ速さで開きます。

ステータス、時間、サイズ
送信後、URLバーの下の行には次のものが表示されます:
- ステータス。クラス(2xx、3xx、4xx、5xx)によって色分けされます。レスポンスが得られなかったリクエストには、代わりに失敗またはキャンセル済みと表示されます。
- やり取りのフェーズごとのバー。リクエストの実行中に伸びていきます。
- 合計時間。
行にポインタを合わせると、詳細を示すカードが開きます:
| カード内の項目 | 内容 |
|---|---|
| ステータス | ステータスコードと理由。 |
| 時間 | やり取りの合計時間。 |
| サイズ | ボディのサイズ。ボディの受信中は、全体のうちどれだけ届いたか。 |
| エンコーディング | 圧縮方式と、デコード前後のサイズ(br, 12 KB → 48 KBなど)、またはデコードできなかったこと。 |
| 3回のリダイレクト | 追跡したリダイレクト。クリックすると、各ホップのステータス、メソッド、アドレス、時間が分かります。 |
| チェック | リクエストのチェックのうち、合格した数。 |
| 再利用した接続 | リクエストが、以前のリクエストから開いたままの接続で送られました:DNS、接続、TLSの時間はありません。 |
| TLS | TLSのバージョンとプロトコル(TLS 1.3 · h2など)。クリックすると証明書が表示されます:サブジェクト、発行元、有効期間、名前。オレンジの開いた鍵は、検証がオフだったことを示します。 |
| HTTP/3を提供 | サーバがAlt-SvcでHTTP/3を提供しました。HTTPバージョンを参照してください。 |
| アドレス | サーバのIPアドレスとポート。 |
| タイムライン | DNS、接続、TLS、待機(レスポンスの最初のバイトまで)、転送と、それぞれの時間。 |
リクエストが再送信された場合(新しい接続で、またはHTTP/1.1で)、カードにその理由が表示されます。失敗した場合は、カードにエラーが表示されます。
レスポンスのタブ
| タブ | 表示する内容 |
|---|---|
| ボディ | 選択した表示でのボディ。 |
| イベント | Server-Sent Eventsなどのイベントストリーム。1行に1イベント。WebSocketとSSEを参照してください。 |
| テスト | リクエストのチェックとスクリプトのテストの結果。3/4のような件数付き。 |
| コンソール | リクエストのスクリプトが記録したもの。スクリプトが実行されたときのみ。スクリプトとテストを参照してください。 |
| ヘッダー | レスポンスヘッダー。件数付き。 |
| Cookie | 送信されたCookieと設定されたCookie、およびウインドウのCookieジャー。 |
| 生データ | 1つのHTTPメッセージとしてのレスポンス:ステータス行、ヘッダー、空行、ボディ。 |
| 16進数 | ボディのバイト。 |
| 通信 | 接続上を実際に流れたとおりの、送信と受信のバイト。 |
ボディの表示
ボディタブの上部の行で表示を選びます:
| 表示 | 内容 |
|---|---|
| テキスト | 届いたままのボディ。コンテンツタイプに応じて色が付きます。 |
| JSON | 整形されたJSON。 |
| JSONツリー | 展開と折りたたみができるツリーとしてのJSON。 |
| XML | 要素、属性、テキストのツリーとしてのXML。 |
| フォーム | ツリーとして読み取ったURLエンコードのボディ。 |
| MessagePack | ツリーとして読み取ったMessagePackのボディ。 |
| プレビュー | 画像、PDF、オーディオ、ビデオ。クイックルックで表示します。 |
どのボディにもすべての表示が用意されているので、コンテンツタイプが誤って送られたレスポンスも、本来の内容として読めます。レスポンスが最初に開く表示はコンテンツタイプで決まり、 Echolotはボディの種類ごとに、選んだ表示を記憶します。1つのJSONレスポンスでJSONツリーを選ぶと、次のレスポンスからはツリーで開きます。
HTMLとスクリプトは、実行もレンダリングもされません。プレビューとデフォルトのアプリで開くは、それらをテキストとして表示します。
テキスト表示では、長い行は横にスクロールします。折り返しボタンをクリックするか、表示 › 長い行を折り返すを選ぶと、折り返されます。 表示 › コードを拡大(⌘+)、コードを縮小(⌘-)、実際のコードサイズ(⌘0)は、すべての場所でコードのサイズを変更します。
JSONツリーとXMLツリー
ツリーには、各値のキーまたはインデックス、型、値が表示されます。折りたたんだオブジェクトや配列には、含まれる項目の数が表示されます。
1,000件を超える配列は[0 … 999]のような範囲に分割されるので、巨大な配列もすぐに開きます。
値にポインタを合わせると、ボタンが表示されます:
- ブラウザで開く:値がWebアドレスのとき。
- 値をコピー。
- 変数に保存…:値を変数に保存し、希望すれば送信のたびに更新します。レスポンスのキャプチャを参照してください。
行を右クリックすると、さらに操作できます:
- JSONツリーでは:パスをコピー(
$.items[0].skuのような、値へのJSONPath)、値をコピー、チェックを追加。最後のものは、その値が現在の値と等しいというチェックをテストタブに追加します。 - XMLツリーでは:XPathをコピーと値をコピー。
画像のアドレスである値にポインタを合わせると、横にサムネイルが開きます。画像は、ブラウザが画像を取得するのと同じように取得されます。Cookieや認証情報は使われず、最大10 MBまでで、履歴には記録されません。
data:image/…の値は、リクエストなしで表示されます。日付に見える値(秒、ミリ秒、マイクロ秒、ナノ秒のUnix時間、またはISO 8601のタイムスタンプ)にポインタを合わせると、読みやすい日付で表示されます。
XMLツリーは50 MBまでのボディに、フォームとMessagePackは64 MBまでに対応します。それより大きいものはテキストを使って検索してください。
検索
⌘F(リクエスト › ボディ内を検索)を押すか、虫眼鏡をクリックします。
- テキストとJSONでは、検索する文字列を入力します。Aaは大文字小文字を区別し、.*は正規表現にします。バーには
3 of 1,204のように現在位置が表示されます。 ↩または⌘Gで次の一致、⇧⌘Gで前の一致に移動します。 最大10,000件の一致に印が付き、それ以上あるときは件数に+が付きます。 - JSONツリー、フォーム、MessagePackでは、バーに
$.items[0]のようなJSONPathを入力すると、その値に移動します。何もなければ見つかりませんと表示されます。
Escを押すとバーが閉じます。
大きなレスポンス
Echolotはボディをメモリに保持しません。届くそばからファイルにストリーミングし、ビューアは画面に表示されている部分だけを読み込みます:
- 残りがまだ届いている間も、最初の行が表示されます。ボディのダウンロード中は、詳細カードにどれだけ届いたかが表示されます。
- JSONは、ボディが始まるとすぐに整形を開始し、ボディが大きくなるのに合わせて追従します。
- JSONツリーは、展開した行だけを構築します。
- 検索は、ディスク上のボディ全体を対象にします。
AlpenglowのCatalog › Export the catalogで試せます:4万件の商品、約14 MBです。
ボディは、設定 › ストレージ › レスポンスのボディを保持する上限で設定したサイズまでディスクに保持されます。上限を超えると、タブで開いているボディを除き、最も長く使われていないものから削除されます。 ボディが削除された古いレスポンスには、This response's body is no longer stored.と表示されます。ストレージと暗号化を参照してください。
ヘッダー
ヘッダータブには、レスポンスヘッダーが届いた順に一覧されます。行にポインタを合わせるか、行を選択してSpaceを押す(移動は↑と↓)と、 値の全文、ヘッダーの用途、値が意味することが表示されます。ヘッダーを右クリックすると、値をコピー、ヘッダーをコピー、チェックを追加が選べます。 最後のものは、そのヘッダーに対するチェックをテストタブに追加します。
Cookie
Cookieタブは3つの部分に分かれています:
- リクエストと一緒に送信:送信されたCookieと、それぞれの出どころ。
- レスポンスで設定:各
Set-Cookieとその属性。ジャーが拒否した場合は警告も表示されます。 - このウインドウに保存:ウインドウのCookieジャーにあるすべてのもの。個別のボタンで1つ削除でき、すべて消去ですべて削除できます。
リクエストでCookieを送信・保存がオフになっていると、タブにそう表示されます。Cookieを参照してください。
生データ、16進数、通信
- 生データは、レスポンスを1つのメッセージとして表示します:ステータス行、ヘッダー、空行、デコード済みのボディ(最初の64 MB。ボディタブにはすべてがあります)。
- 16進数は、ボディのバイトを表示します:オフセット、2つのグループに分けた1行16バイト、そのASCII。マウスか、矢印キーと⇧でバイトを選択できます。 コピーすると16進数のペアになり、ASCII列で選択した場合はテキストになります。
- 通信は、接続上を実際に流れたとおりのバイトを表示します:送信または受信を選びます。フレーミングされたままのヘッダーと、デコード前の圧縮されたボディが見られます。 各方向で最大1 MBが保持され、最初の部分だけを表示しているときはタブにそう表示されます。
保存と共有
ボディタブの右上にある保存ボタンをクリックします:
- ボディを保存…は、ボディ(デコード済み)をファイルに書き出します。
- デフォルトのアプリで開くは、その種類にMacが使うアプリで開きます。
- エンコードされたボディを保存…は、ボディを届いたままの圧縮された状態で書き出します。圧縮されたレスポンスのみ。
- やり取りをHARとして書き出す…は、リクエストとレスポンスをHARファイルとして書き出します。
レスポンスではなくリクエストを共有するには、リクエスト › cURLとしてコピー(⌥⌘C)か、リクエスト › コードを生成…(⌥⌘G)を使います。 HTTPリクエストを参照してください。
以前のレスポンスと比較
送信はすべて履歴に保存されます。URLバーの下の行の末尾にある、件数付きの時計ボタンを押すと、このリクエストのレスポンスが開きます。 それぞれ、ステータス、時間、送信者(あなた、実行、エージェント)、所要時間、サイズが表示されます。

- レスポンスをクリックすると表示されます。レスポンスペインの上のバーに過去のレスポンスと表示され、最新を表示で戻ります。
- 2つのレスポンスを比較するには、一方を表示し、リスト内のもう一方にポインタを合わせて比較ボタンをクリックするか、過去のレスポンスバーの最新と比較をクリックします。 比較では、追加された部分と削除された部分が表示されます。
- リストのメニューのこのリクエストの履歴を消去…は、このリクエストの履歴を削除します。
ワークスペース全体の履歴については、履歴を参照してください。
リクエストが失敗したとき
レスポンスが得られなかった場合、ペインにリクエストがタイムアウトしましたなどのエラーと、再試行が表示されます。ほかに2つのボタンが表示されることがあります:
- スクリプトを確認…:リクエストのスクリプトがEcholotの外から来たもので、実行前に信頼する必要があるとき。スクリプトとテストを参照してください。
- アクセスを許可…:App Storeエディションで、リクエストが、アプリがまだ読み取れないファイルを指しているとき。

