echolot send
ターミナルから1つのリクエスト(URLまたは保存済みのリクエスト)を送信し、そのボディ、ヘッダー、所要時間、通信のバイト列を確認します。
echolot send は1つのリクエストを送信し、レスポンスのボディを標準出力に書き出します。curlと同じようにURLを指定するか、ワークスペース内の保存済みリクエストのパスを指定します。
保存済みリクエストはアプリと同じように送信され、変数、認証、スクリプト、チェックも含まれます。WebSocketとSocket.IOのセッションを開いたり、イベントストリームを待ち受けたりすることもできます。
echolot send [<options>] <url><url> は、URLか、ワークスペースの requests フォルダ内にある保存済みリクエストファイル(.req.toml、.gql.toml、.mcp.toml)のパスです。
URLを送信する
echolot send https://demo.echolot.dev/v1/products/TNT-MH-2Pボディは標準出力に書き出されるので、パイプでつなげたり(| jq .)、-o でファイルに書き出したりできます。指定しない限り、ほかには何も出力されません。
-iは、ボディの前にステータス行とヘッダーを出力します。-vは、所要時間の内訳を標準エラーに出力します:DNS、接続、TLS、待機、転送、ボディのサイズとハッシュ、リモートアドレス、TLSのバージョン、選ばれたプロトコル、 サーバの証明書。デコードされたボディ(gzip、Brotli、zstd)では、デコード前後のサイズも表示されます。--wireは、通信で捕捉された、送受信した正確なバイト列を標準エラーに出力します。
ボディとヘッダーを指定する例です。
echolot send https://demo.echolot.dev/echo/anything -X POST \
-H 'Content-Type: application/json' \
-d '{"sku": "TNT-MH-2P"}' -v── body ── decoded zstd 257 → 418 bytes
── timing ──
DNS 79.61 ms
Connect 15.65 ms
TLS 28.70 ms
Waiting 19.75 ms
Transfer 0.53 ms
Total 146.36 ms
Body 418 bytes, sha256 01facf0b2388ca67…
Remote [2606:4700:3031::6815:3cf1]:443
── tls ── TLS 1.3, ALPN h2
CN=echolot.dev
issuer CN=WE1,O=Google Trust Services,C=US, valid until 30 Jan 2027
Alt-Svc the server offers HTTP/3 (h3 on port 443); --http3 uses it, and so do later requests on Automatic in the same run-H は、ヘッダーの順序と大文字小文字を保持します。--data-file は、ボディをメモリに読み込まずファイルからストリーミングするので、大きなアップロードにも使えます。
--raw は、あなたが書いていないヘッダーを一切送信しません:Host、Content-Length、Accept-Encoding もありません。
保存済みリクエストを送信する
リクエストファイルのパスを指定します。Echolotはその周りのワークスペースを見つけ、選んだ環境で {{variables}} を解決し、リクエストのスクリプトとチェックを実行して、
結果を出力します。
echolot send Alpenglow.echolot/requests/catalog/get-product.req.toml -iHTTP/2 200 OK
content-type: application/json; charset=utf-8
etag: W/"TNT-MH-2P-1"
…
{
"sku": "TNT-MH-2P",
"name": "Matterhorn 2P Tent",
…
}
── tests ──
✓ Status equals 200
✓ JSON value $.sku equals {{productId}}
2 passed-e stagingまたは--env stagingは、environments/staging.tomlの環境で解決します。- シークレット変数は、
ECHOLOT_SECRET_<NAME>変数から、Macではキーチェーンから取得されます。シークレットを参照してください。 - スクリプトがログに出力した内容は
── console ──の下に、チェックとpm.testの結果は── tests ──の下に、標準エラーとして表示されます。 チェックが失敗すると、終了コードは1になります。 - 解決できない変数は、リクエストを送信する前に警告として出力されます。
-X、-H、-d、--data-fileはURL用です。保存済みリクエストは、ファイルに書かれた内容を送信します。--timeout、--http1.1、--http2、--http3、--raw、-k、--listen、プロキシと証明書のオプションは、どちらにも適用されます。
イベントストリーム、WebSocket、Socket.IO
Server-Sent Events。 text/event-stream のレスポンスは、届いたそばから標準出力にストリーミングされます。--listen は待ち受ける時間を指定します。
デフォルトは10秒で、0 はサーバがストリームを終了するまで待ち受けます。
echolot send https://demo.echolot.dev/v1/orders/events --listen 0WebSocket。 ws:// または wss:// のURLを指定すると、セッションが開きます。入力した(またはパイプで渡した)各行と -d は、テキストメッセージとして送信されます。
届いたメッセージは1行ずつ出力され、バイナリのものはBase64で出力されます。入力が終わると、Echolotは --listen で指定した秒数だけ待ち受けてから閉じます。
--subprotocol はサブプロトコルを提示し、複数回指定できます。-i または -v は、アップグレードのレスポンスを標準エラーに出力します。
echo '{"op": "subscribe", "channel": "orders"}' | echolot send wss://demo.echolot.dev/v1/orders --listen 5Socket.IO。 --socketio は、http(s):// または ws(s):// のURLでSocket.IOを使います。入力の各行は1つのイベントで、イベント名に続いて
JSONの引数を書きます(chat {"text": "hi"}。配列は複数の引数になります)。イベントは name [arguments] の形式で、確認応答は ack id [arguments] の形式で出力されます。
echolot send http://localhost:3001 --socketio --namespace /support --auth '{"token": "demo"}'試せるサーバについては、Socket.IOリクエストを参照してください。
オプション
| オプション | 意味 |
|---|---|
-e、--env <env> | 保存済みリクエストを解決する環境:ファイル名から .toml を除いたもの。 |
-X、--request <method> | HTTPメソッド。任意のトークンを指定できます。デフォルトは GET。 |
-H、--header <header> | 'Name: value' 形式のヘッダー。複数回指定でき、順序と大文字小文字は保持されます。 |
-d、--data <data> | インラインで指定するリクエストボディ。 |
--data-file <file> | このファイルからリクエストボディをストリーミングします。 |
-o、--output <file> | ボディを標準出力ではなくこのファイルに書き出します。 |
--raw | 生モード:自動ヘッダーを一切送信しません。 |
-k、--insecure | TLS証明書の検証をスキップします。 |
-i、--include | ボディの前にステータス行とヘッダーを出力します。 |
-v、--verbose | 所要時間の内訳を標準エラーに出力します。 |
--wire | 送受信した正確なバイト列を標準エラーに出力します。 |
--listen <seconds> | イベントストリームを待ち受けてから終了するまでの秒数。0 はサーバが終了するまで待ち受けます。デフォルトは10。 |
--timeout <seconds> | やり取り全体のタイムアウト。デフォルトは60。 |
--http1.1 | HTTP/1.1のみで送信します。 |
--http2 | HTTP/2のみで送信します:TLSではALPN、平文HTTPではprior knowledge。 |
--http3 | QUIC上のHTTP/3のみで送信します:https:// のみ、プロキシは使えません。macOS 27以降とLinuxで利用できます。 |
--subprotocol <name> | ws:// と wss:// のURL用:提示するサブプロトコル。複数回指定できます。 |
--socketio | Socket.IOを使います。入力の各行は event [JSON arguments] です。 |
--namespace <namespace> | --socketio 用:参加する名前空間。デフォルトはURLのパス、なければ /。 |
--auth <json> | --socketio 用:認証ペイロード(JSONオブジェクト)。 |
--socketio-version <version> | --socketio 用:サーバのSocket.IOバージョン。4(3も含む)または 2。デフォルトは4。 |
--socketio-path <path> | --socketio 用:サーバが待ち受けるパス。デフォルトは /socket.io/。 |
--proxy <url> | このプロキシ経由で送信します:http://host:port、https://…、socks5://user:password@host:port。 |
--no-proxy | HTTP_PROXY などを無視して直接接続します。 |
--cacert <file> | このPEMファイル内のCA証明書も信頼します。複数回指定できます。 |
--cert <file> | このクライアント証明書を送信します:PEMファイル(--key と併用)または .p12/.pfx ファイル。 |
--key <file> | クライアント証明書のPEM秘密鍵。証明書ファイルに鍵が含まれていない場合に使います。 |
--pass <passphrase> | 鍵またはPKCS#12ファイルのパスフレーズ。環境変数 ECHOLOT_CERT_PASSPHRASE の使用をおすすめします。 |
--http1.1、--http2、--http3 のいずれも指定しない場合、Echolotはアプリの自動設定と同じようにバージョンを選びます。
これらのうち指定できるのは1つだけです。
終了コード
| コード | 条件 |
|---|---|
0 | 400未満のレスポンスで、すべてのチェックに合格しました。 |
1 | レスポンスがない(理由が出力されます)、またはチェックやテストが失敗しました。 |
22 | レスポンスのステータスが400以上でした。ボディは書き出されます。 |
64 | オプションが正しくない、URLではない、またはワークスペース外のファイル。 |
pm.execution.skipRequest() を呼び出すリクエスト前スクリプトがある場合、何も送信せず、終了コード0で終了します。