tigtools

cURLコード変換

ブラウザの開発者ツールやAPIドキュメントからコピーしたcurlコマンドを貼り付けると、選択した言語で同等のコードを取得できます。

ブラウザー内で動作 登録不要

言語

使い方

  1. ブラウザの開発者ツール(ネットワークタブで右クリック→「cURLとしてコピー」)やAPIドキュメントから、リクエストをcurlとしてコピーします。
  2. ボックスに貼り付けます。\ による行継続も問題ありません。
  3. JavaScript fetch、Node.js axios、Python requests、PHP cURLのいずれかを選択します。
  4. コードの下に表示される注意事項を読み、結果をコピーまたはダウンロードします。

仕組み

コンバーターはまず、コマンドを 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エスケープは認識されない場合があります。

プライバシー

コマンドはお使いのブラウザ内でのみ解析され、リクエストは送信されません。アップロード、保存、アクセス解析に含まれることは一切ありません。