使い方
- ブラウザの開発者ツール(ネットワークタブで右クリック→「cURLとしてコピー」)やAPIドキュメントから、リクエストをcurlとしてコピーします。
- ボックスに貼り付けます。\ による行継続も問題ありません。
- JavaScript fetch、Node.js axios、Python requests、PHP cURLのいずれかを選択します。
- コードの下に表示される注意事項を読み、結果をコピーまたはダウンロードします。
仕組み
コンバーターはまず、コマンドを POSIX シェルと同じ方法で単語に分割します。シングルクォート、バックスラッシュによるエスケープを含むダブルクォート、$'…' 形式の文字列、バックスラッシュによる行継続を解釈します。$TOKEN などのシェル変数は展開されず、テキストとして残ります。
対応している curl オプション: URL(または --url)、-X/--request、-H/--header、-d/--data、--data-ascii、--data-raw、--data-binary、--data-urlencode、--json、-F/--form と --form-string(フィールドと @file アップロード、;type= を含む)、-u/--user、-G/--get、-I/--head、-A/--user-agent、-e/--referer、-b/--cookie(Cookie 文字列)、-L/--location、--compressed。短いオプションは -sSL のように結合でき、値は -XPOST のように付けられます。
ルールは curl に従います。複数の -d の値は & で連結されます。データがあると、-X または -G で別の指定がない限り、リクエストは POST になります。-G はデータをクエリ文字列として URL に追加します。--json は Content-Type および Accept ヘッダーを application/json に設定します。本文が JSON で、Content-Type がそのことを示す場合、コードはエスケープされた文字列ではなく実際のオブジェクト(Python では json=、PHP では json_encode を使った配列)を送信します。マルチパートフォームの場合、バウンダリが正しくなるように Content-Type ヘッダーはライブラリに任せます。
-k/--insecure は意図的に無視され、その旨が注記で説明されます。curl 自身の出力のみを変更するオプション(-s、-S、-v、-i、-o、--fail など)は、注記とともに無視されます。それ以外のオプションは、黙って異なる動作をするコードではなく、そのオプション名を示す明確なエラーになります。1 つ違いが残ります。curl は -L がある場合のみリダイレクトをたどりますが、fetch、axios、requests はデフォルトでリダイレクトをたどります。PHP コードは -L が指定された場合のみリダイレクトをたどります。
このツールはコードを生成するだけです。リクエストを送信することはないため、コマンド内のトークンやパスワードがどこかで使用されることはありません。
使用例
Pythonでブラウザのリクエストを再現する
Chromeのネットワークタブから失敗したAPI呼び出しをcURLとしてコピーし、Python requestsに変換します。ヘッダー、Cookie、JSONボディが引き継がれるため、スクリプトでバグを再現できます。
Node.jsでAPIドキュメントを利用する
APIリファレンスに「curl -u key: https://api.example.com/v1/charges -d amount=2000 -d currency=eur」と記載されている場合、axios版では auth: { username: "key", password: "" } とフォームエンコードされたボディを使用します。
PHPでファイルをアップロードする
「curl -F 'file=@invoice.pdf;type=application/pdf' -F 'note=March' https://x.io/upload」は、new CURLFile('invoice.pdf', 'application/pdf') と note フィールドを使った CURLOPT_POSTFIELDS になります。
よくある質問
このツールはリクエストを送信しますか?
いいえ。コマンドのテキストを解析してコードを生成するだけです。リクエストは実行されないため、コマンド内のAPIキーやCookieが使用・保存されることはありません。
なぜ -k/--insecure は変換されないのですか?
証明書の検証を無効にすると、通信が傍受される可能性があります。生成されるコードでは検証が有効のままです。サーバーの証明書が信頼されていない場合は、証明書またはトラストストアを修正してください。
なぜ「option is not supported」と表示されるのですか?
コンバーターは、意味を正確に再現できるオプションだけを変換します。プロキシ、クライアント証明書、Cookie jarなどのオプションは、curlと動作が異なるコードが生成されないように拒否されます。
Windows cmdのコマンドでも動作しますか?
「cURL (bash)」としてコピーしたコマンドが最も確実に動作します。Windows cmdでは行継続に^が使われ、引用符の扱いも異なります。行末の^は認識されますが、他のcmdエスケープは認識されない場合があります。
プライバシー
コマンドはお使いのブラウザ内でのみ解析され、リクエストは送信されません。アップロード、保存、アクセス解析に含まれることは一切ありません。