通信内容のデバッグ
通信の全記録を出力する (--trace-ascii
)
-v
が表示するヘッダー情報に加え、送受信データ本体(body)も記録するには、「--trace-ascii
」でファイルに出力します。
# 通信の全内容を trace.log ファイルに出力
curl --trace-ascii trace.log https://example.com
スクリプトで使う
HTTPステータスコードなどを取得する (-w
)
スクリプトでHTTPステータスコードなどを変数に格納するには、「-w
」で出力形式を指定します。-s
と-o /dev/null
を併用し、bodyは破棄するのが一般的です。
# HTTPステータスコードを変数に格納
status_code=$(curl -s -o /dev/null -w "%{http_code}" https://example.com)
if [ "$status_code" -eq 200 ]; then
echo "Status is 200"
fi
HTTPエラーで異常終了させる
デフォルトでは、404などのHTTPエラーでもcurlの終了コードは0です。「-f
」を指定すると、サーバーエラー時に終了コードが200以外(22)となり、スクリプトのif文などでエラーを検知できます。
# 404エラー時にelseブロックが実行される
if curl -f -s https://example.com/non-existent-page; then
: # Success
else
echo "curl command failed with exit code $?"
fi
失敗時に再試行する
リクエストが失敗した際、「--retry
」で指定回数だけ再試行させます。「--retry-delay
」で再試行までの待機秒数を指定できます。
# 失敗した場合、5秒待ってから最大3回再試行
curl --retry 3 --retry-delay 5 https://example.com