curl コマンドジェネレーター

HTTPメソッド・URL・ヘッダー・ボディ・認証方式をフォームで指定すると、コピーしてそのまま実行できる curl コマンドを生成します。リクエストを実際には送信しないため CORS の制約を受けません。

よく使う curl オプション一覧

オプション 説明
-X, --request <method> HTTPメソッド(GET・POST・PUT・PATCH・DELETE等)を指定する。省略時は本文なしなら GET、本文ありなら POST になる。
-H, --header <header> リクエストヘッダーを1件追加する。複数指定する場合は -H を繰り返す。
-d, --data <data> リクエストボディを送信する。-X を指定しない場合、自動的に POST・Content-Type: application/x-www-form-urlencoded として送信される。
-u, --user <user:password> Basic認証のユーザー名とパスワードを "user:password" 形式で指定する。
-k, --insecure SSL証明書の検証をスキップする。自己署名証明書の開発環境向け。本番環境では非推奨。
-L, --location サーバーが 3xx リダイレクトを返した場合、Locationヘッダーの示す先へ自動的に追従する。
-v, --verbose リクエスト・レスポンスヘッダーを含む詳細なやり取りを標準エラー出力に表示する。デバッグに有用。
--compressed Accept-Encoding ヘッダーを付与し、gzip等で圧縮されたレスポンスを要求・自動展開する。
-o, --output <file> レスポンスボディを標準出力ではなく指定したファイルに保存する。
-F, --form <name=content> multipart/form-data 形式でフォームデータやファイルを送信する。ファイルアップロードには "@ファイルパス" を指定する。

フォームからcurlコマンドを組み立てる

メソッド・URL・ヘッダー・ボディ・認証方式をフォームで指定すると、そのままターミナルへ貼って実行できる curl コマンドが出来上がります。**このツールはリクエストを実際には送信しないため、ブラウザの CORS 制約を受けません。** 相手のサーバーが許可していないAPIでも、コマンドだけは組み立てられます。

**curl でつまずきやすいのがメソッドとボディの関係です。** `-d` でボディを付けると、**メソッドを書かなくても自動的に POST になります。** そのため PUT や PATCH を送るつもりで `-d` だけ付けると、意図しない POST が飛びます。もう一つ多いのが、JSON を送っているのに `Content-Type: application/json` を付け忘れる誤りで、この場合 curl は `application/x-www-form-urlencoded` として送るため、**サーバー側がJSONとして解釈してくれません。** 生成されたコマンドをターミナルへ貼るときは、シェルのクォートにも注意してください。**シングルクォートの中では変数が展開されませんが、ダブルクォートの中では展開されます。**

使い方

  1. メソッドとURLを指定する 取得なら GET、送信なら POST を選びます。
  2. ヘッダーを追加する **JSONを送るなら `Content-Type: application/json` を忘れないでください。**
  3. ボディを書く **ボディを付けると、メソッド未指定の場合は自動的に POST になります。**
  4. コマンドをコピーして実行する ターミナルへ貼るだけで、そのまま動きます。

使いこなすためのヒント

  • 生成したコマンドはそのまま ターミナル・シェルスクリプト・CI/CD 設定ファイル に貼り付けて実行できます。値はすべてシングルクォートでエスケープ済みです。
  • メソッドを GET のままボディを入力すると警告が表示されます。curl は -X を省略した状態で -d を使うと自動的に POST として送信するため、意図しない挙動を避けるための注意喚起です。
  • 「Content-Type: application/json を自動付与」にチェックを入れると、JSON API へのリクエストで忘れがちな Content-Type ヘッダーを自動的に追加します。
  • Basic認証・Bearerトークンのどちらも入力値はブラウザ内でのみ処理され、サーバーには一切送信されません。
  • 生成された -k(証明書検証スキップ)は自己署名証明書のローカル開発環境限定の一時的な回避策です。本番 API への恒久的な利用は避けてください。

活用シーン

APIの動作を確かめる

**ブラウザから叩けないAPIも、curlなら CORS に阻まれずに試せます。**

手順書にコマンドを載せる

誰でも再現できる形で、リクエストの内容を記録できます。

不具合の再現手順を共有する

**「このコマンドを実行してください」と渡せば、環境差の少ない再現ができます。**

curlのオプションを学ぶ

フォームの入力がどのオプションになるのかを見比べられます。

curlの用語

-X
メソッドを明示する指定です。**`-d` を使うと省略しても POST になるため、PUT や DELETE のときに必要になります。**
-H
ヘッダーを追加する指定です。複数回書けば、その数だけヘッダーが付きます。
-d
リクエストボディを指定します。**これを書くとメソッドが POST になり、既定の Content-Type はフォーム形式になります。**
-u
ベーシック認証のユーザー名とパスワードを指定します。`ユーザー名:パスワード` の形で書きます。
Bearerトークン
`Authorization: Bearer ...` の形で送る認証方式です。多くのAPIがこの形を採っています。
-i / -v
応答ヘッダーを表示する/通信の詳細を表示する指定です。**動かないときの調査に役立ちます。**

よくある質問

いいえ。このツールはコマンド文字列を組み立てるだけで、実際のHTTPリクエストは一切送信しません。生成されたコマンドをターミナルにコピーして初めて実行されます。実際にリクエストを送信して結果を確認したい場合は、姉妹ツールの「REST APIテスター」をご利用ください。

はい。Postmanで組み立てたリクエストのメソッド・URL・ヘッダー・ボディをこのツールに入力すれば、そのままコピー&ペーストできる curl コマンドを生成できます。CI/CDスクリプトやドキュメントへの転記に便利です。

技術的には可能ですが注意が必要です。curl は -X オプションを省略した状態で -d(本文)を指定すると、自動的に POST として送信します。GET を維持したまま本文を送りたい特殊なケースでは、生成後のコマンドに -X GET を手動で追加してください。

いいえ。入力した認証情報はすべてブラウザ内のJavaScriptで処理され、toolbase.cc のサーバーには一切送信されません。生成されたコマンドをご自身の環境で実行する際に、その環境から直接APIへ送信される仕組みです。

「-k(--insecure)」はSSL証明書の検証をスキップするオプションで、自己署名証明書を使うローカル開発環境限定の一時的な回避策として使うものです。本番環境や機密情報を扱う通信で使用すると中間者攻撃のリスクが生じるため推奨しません。
ツールくん

余談ですが ― curl はなぜ「みんなが使うのに誰も知らない」ツールなのか

curl は1996年にスウェーデンのエンジニアダニエル・ステンバーグが開発した、URLを使ってデータを転送するコマンドラインツールです。もともとは IRC チャットボット用に通貨レートを取得する小さなスクリプトが起源で、そこから HTTP・FTP・SMTP など25種類以上のプロトコルに対応する巨大なプロジェクトへと成長しました。

curl は世界で最も広く使われているソフトウェアの一つとされています。スマートフォン・自動車・家電・ゲーム機・宇宙探査機(NASAの火星探査ミッションでも使用実績あり)など、インターネットに接続するあらゆる機器の内部に組み込まれており、その数は数百億台規模にのぼると推定されています。それほど普及していながら、開発者以外にはほとんど名前を知られていない「縁の下の力持ち」の代表例です。

ステンバーグ氏は2019年、Web の基盤技術への貢献が認められ、リナックス財団から表彰されました。彼は現在も一人の中心的なメンテナーとしてcurlの開発を牽引しており、20年以上にわたり後方互換性を壊さないよう慎重にプロジェクトを運営してきたことで知られています。

GUIツールの Postman が普及した現在でも、curl コマンドは README・公式ドキュメント・APIの動作確認手順として使われ続けています。理由は単純で、curl はインストール不要でほぼ全てのLinux・macOS環境に標準搭載されており、コマンド1つでその場で実行して結果を共有できるという再現性の高さにあります。