| リクエストの形 |
|---|
| HTTPメソッドを設定する。 | curl -X POST https://api.test |
| リクエストヘッダーを追加する。 | curl -H "Accept: application/json" URL |
| ボディを送信する(POSTとデフォルトのContent-Typeを設定する)。 | curl -d "name=Ada" URL |
| -dの値をクエリパラメータとしてGETに付け加える。 | curl -G -d "q=hi" URL |
| マルチパートのフォームデータを送信する(ファイルアップロード)。 | curl -F "file=@photo.png" URL |
| URLエンコードを適用したフォームデータを送信する。 | curl --data-urlencode "name=Ada Lovelace" URL |
| PUTでファイルをアップロードする。 | curl -T big.zip URL |
| アップロードをリモートファイルの置き換えではなく追記にする。 | curl -a -T log.txt ftp://server.test/logs/log.txt |
| JSONとAPI |
|---|
| 正しいContent-TypeでJSONを送信する。 | curl -H "Content-Type: application/json" -d '{"a":1}' URL |
| ファイルの内容をボディとして送信する。 | curl -d @body.json URL |
| ヘッダーを手動で設定せずにJSONを送信する(curl 7.82以降)。 | curl --json '{"a":1}' URL |
| 認証 |
|---|
| ユーザーとパスワードによるHTTP Basic認証。 | curl -u ada:s3cr3t URL |
| OAuthベアラートークンを送信する。 | curl --oauth2-bearer TOKEN URL |
| 任意のトークンスキームを手動で送信する。 | curl -H "Authorization: Bearer TOKEN" URL |
| 相互TLS用にクライアント証明書とその鍵を提示する。 | curl --cert client.pem --key key.pem URL |
| 単一のCAバンドルファイルでサーバーを検証する。 | curl --cacert ca.pem URL |
| CAのディレクトリでサーバーを検証する。 | curl --capath /etc/ssl/certs URL |
| プロキシ経由でリクエストを送信する。 | curl -x http://proxy.test:8080 URL |
| プロキシへの区間に対してのみTLS検証をスキップする。 | curl -x https://proxy.test:8443 --proxy-insecure URL |
| 最小バージョンとしてTLS 1.3を要求する。 | curl --tlsv1.3 URL |
| アイデンティティ |
|---|
| カスタムのUser-Agent文字列を送信する。 | curl -A "Mozilla/5.0" URL |
| Refererヘッダーを送信する。 | curl -e https://example.com/page URL |
| リクエストと一緒にCookieを送信する。 | curl -b "session=abc123" URL |
| レスポンスのCookieをファイルに保存する。 | curl -c cookies.txt URL |
| 出力 |
|---|
| ボディをファイルに書き込む。 | curl -o page.html URL |
| リモートのファイル名でボディを保存する。 | curl -O https://site/file.tgz |
| ボディの前にレスポンスヘッダーを出力する。 | curl -i URL |
| ヘッダーのみ取得する(HEADを送信する)。 | curl -I URL |
| 進行状況メーターとエラーを隠す。 | curl -s URL |
| ボディの後にフォーマット文字列を出力する(タイミング、ステータス)。 | curl -w "%{http_code}\n" -o /dev/null URL |
| HTTPエラーで非ゼロで終了し、エラーボディを出力しない。 | curl -f URL |
| HTTPエラーで非ゼロで終了するが、ボディは出力する。 | curl --fail-with-body URL |
| Content-Dispositionヘッダーから保存ファイル名を決める。 | curl -OJ URL |
| 中断された転送を停止した位置から再開する。 | curl -C - -O URL |
| デフォルトのメーターの代わりにプログレスバーを表示する。 | curl -# -O URL |
| サイレント実行中でもエラーを出力する。 | curl -sS URL |
| レスポンスヘッダーをファイルに書き込む。 | curl -D headers.txt URL |
| 圧縮されたレスポンスを要求してデコードする。 | curl --compressed URL |
| -oのパスに存在しないディレクトリを作成する。 | curl -o cache/api/data.json --create-dirs URL |
| リダイレクトと接続 |
|---|
| 3xxリダイレクトに追従する。 | curl -L URL |
| TCP接続を待つ最大秒数。 | curl --connect-timeout 5 URL |
| リクエスト全体の最大秒数。 | curl --max-time 30 URL |
| TLS証明書の検証をスキップする。 | curl -k https://self-signed.test |
| 一時的なエラーを最大N回再試行する。 | curl --retry 3 URL |
| 一時的なものだけでなく、あらゆるエラーで再試行する。 | curl --retry 3 --retry-all-errors URL |
| 接続をIPv4またはIPv6に強制する。 | curl -4 URL |
| ホストとポートをアドレスに割り当て、DNSをバイパスする。 | curl --resolve api.test:443:127.0.0.1 https://api.test |
| 転送をネットワークインターフェースまたはアドレスに束ねる。 | curl --interface eth0 URL |
| 複数のURLを同時に転送する。 | curl -Z URL1 URL2 |
| 転送にHTTP/2またはHTTP/3を使う。 | curl --http3 URL |
| バッファリングせず、届いたそばからボディをストリーム出力する。 | curl -N URL |
| 追加のフラグを設定ファイルから読み込む。 | curl -K flags.cfg URL |
| デバッグ |
|---|
| リクエストとレスポンスのやり取り全体を出力する。 | curl -v URL |
| 送受信されたすべてのバイトを16進ダンプする。 | curl --trace - URL |