カールはstderrまたはファイルにhttpコードを書き込みます。

カールはstderrまたはファイルにhttpコードを書き込みます。

APIをテストするためにいくつかのスクリプトを書いています。 JSONレスポンスとリクエストのHTTPステータスコードに興味があります。読みやすくするためにJSONレスポンスをきれいに印刷したいです。

私はリクエストを実行するために使用しており、これを使用してjsonの結果をきれいに印刷したいとcurl思います。python -m json.tool

カリー良い選択-wリクエストに関する情報を表示するために使用できます。%{http_code}残念ながら、この情報は標準出力として印刷されて混乱しますpython -m json.tool。末尾のjson以外のデータを無視するように設定する方法はないようです。

私がするとき

curl \
'--silent' \
'--insecure' \
'-L' \
'-w' \
'\n%{http_code}\n' \
'--user' \
<REDACTED> \
'-X' \
'GET' \
'--' \
'https://somecompany.com/some_api_endpoint' \
| python -m json.tool

わかりました。

$ bash call_api_endpoint_script.sh 
Extra data: line 2 column 1 - line 3 column 1 (char 203 - 207)
Exit 1

curlファイルにステータスコード書き込みを設定する方法はありますか?マニュアルページのオプションには、-wこの情報を他の場所にリダイレクトする可能性が記載されていないようです。

ベストアンサー1

$ curl -s -k -w '%{stderr}%{http_code}\n%{stdout}\n' \
  https://run.mocky.io/v3/0e98ba3e-335e-421b-b762-884d2bf613ba |\
  tee /dev/stderr | jq -r '.name'
200
{
    "name": "Grape"
}
Grape

標準エラー この時点から、-w、--write-out出力は標準エラーに書き込まれます。 (7.63.0で追加)

標準出力 この時点から、-w、--write-out出力が標準出力に書き込まれます。これはデフォルト設定ですが、stderrに切り替えてから再度切り替えるために使用できます。 (7.63.0で追加)

おすすめ記事