Menu

cURL コンバーター

curl コマンドを fetch、axios、Python requests、Go、PHP などに変換。

最終更新

curlコマンドを貼り付けcurlコマンドを貼り付けて開始
JavaScript (fetch)
上にcurlコマンドを貼り付けると、12言語のコードを生成します。

cURL コンバーターとは?

cURLコンバーターは、APIドキュメント、Postmanのエクスポート、AIアシスタントの出力など、あらゆる場所で目にする curl コマンドを、あなたが実際に使うプログラミング言語のコードに変換するツールです。ヘッダー、クエリ文字列、JSONボディ、マルチパートアップロード、Basic認証、Cookieまでまるごと引き継がれるので、リクエストを手作業で書き直す必要はありません。

curl はHTTPリクエストを記述するうえでもっとも汎用的な方法ですが、本番環境で *実際に* curlを実行することはほとんどありません。実際に動くのはJavaScriptの fetch、Pythonの requests、Goの net/http など、あなたのスタックに合わせたコードです。このツールはその橋渡しをします — curlを貼り付け、タブを選び、コードをコピーするだけです。

すべての処理はブラウザ内でローカルに動きます。curlコマンド、ヘッダー、トークンが端末から外に出ることは一切ありません。実在するBearerトークンやセッションCookieを含むコマンドを貼り付けるときも安心です。

変換しながら身につくこと

  • curlのフラグは、どのHTTPクライアントでも特定の概念に対応します。-H はリクエストヘッダー、-d はボディ、-X はメソッド、-u はBasic認証、-F はマルチパートのフォームフィールドです。
  • curlがボディ(-d--data-F)を見つけて -X が指定されていない場合、自動的に POST が選ばれます。多くのクライアントも同じ既定なので、-X を省略しても出力は POST になります。
  • JSONボディとフォームボディはまったくの別物です。Content-Type: application/json ならボディはそのまま送信され、application/x-www-form-urlencoded ならキーと値が & で連結されて送られます。

curlからコードへ変換する手順

  1. curlコマンドを貼り付ける

    ドキュメントからコピーした \ の行継続も含めて、コマンド全体を入力欄に貼り付けます。スマートクォートやPowerShellのプロンプト記号もパーサーが自動で正規化してくれます。

  2. ターゲット言語を選ぶ

    JavaScript fetch、TypeScript、Node axios、Python requests、Python httpx、Go、PHP、Ruby、Java HttpClient、C# HttpClient、HTTPie、PowerShellのタブが用意されています。パース処理は一度しか走らないので、タブの切り替えはノーコストです。

  3. パース結果を確認する

    *Parsed request* パネルを開いて、メソッド、URL、ヘッダー、ボディの種類、insecurefollow redirects といったオプションが意図どおり読み取られているかを確認します。

  4. コピーして認証情報を調整する

    生成されたコードをプロジェクトに貼り付けます。curlにBearerトークンやCookieが含まれていた場合は、コミットする前にリテラル値を環境変数に置き換えましょう。

cURLフラグのクイックリファレンス

このコンバーターが認識するフラグと、生成コードで何にマッピングされるかの対応表です。

フラグ意味
-X, --requestHTTPメソッド-X POST
-H, --headerリクエストヘッダー(繰り返し指定可)-H 'Accept: application/json'
-d, --dataリクエストボディ — 既定でURLエンコード-d 'name=Ada&age=30'
--data-raw@file 展開を行わないボディ--data-raw '$body'
--data-urlencodeボディの一部をパーセントエンコード--data-urlencode 'q=hello world'
-F, --formマルチパートのフォームフィールド(ファイルは @file-F 'avatar=@photo.jpg'
-u, --userBasic認証 → Authorization: Basic …-u alice:s3cret
-G, --getボディをクエリ文字列に昇格し、GETで送信-G -d 'q=ada'
-b, --cookieCookieヘッダー-b 'session=abc'
-A, --user-agentUser-Agentヘッダー-A 'MyApp/1.0'
-L, --location3xxリダイレクトに追従-L
-k, --insecureTLS検証をスキップ(開発用途のみ!)-k
--compressedgzip/deflate/brのレスポンスを受け入れる--compressed
--max-timeリクエスト全体のタイムアウト(秒)--max-time 30

cURL変換の例

クエリ文字列と認証ヘッダー付きのGET

curl
curl 'https://api.example.com/v1/lessons?limit=20&track=python' \  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.demo'
JavaScript (fetch)
const response = await fetch('https://api.example.com/v1/lessons?limit=20&track=python', {  method: 'GET',  headers: {    'Authorization': 'Bearer eyJhbGciOiJIUzI1NiJ9.demo'  }});const data = await response.json();

URLに含まれているクエリパラメータはそのままURLに残します。コンバーターはfetch向けには params オブジェクトに分割し直しません。axiosやrequestsの場合は、読みやすさのために params / params= に切り出して出力されます。

JSONボディをPOSTする

curl
curl 'https://api.example.com/v1/users' \  -H 'Content-Type: application/json' \  --data-raw '{"name":"Ada","age":36}'
Python (requests)
import requests
headers = {    'Content-Type': 'application/json',}json_data = {"name":"Ada","age":36}
response = requests.post('https://api.example.com/v1/users', headers=headers, json=json_data)response.raise_for_status()

ボディがJSONとしてパースでき、かつ Content-Typeapplication/json の場合、コンバーターは requests には json= を、axios には data:(パース済みオブジェクト)を出力します。JSON.parseが失敗したときは元のリテラル文字列をそのまま保持し、書き換えは行いません。

マルチパートのファイルアップロード

curl
curl 'https://api.example.com/upload' \  -F 'caption=Hello' \  -F 'photo=@./avatar.jpg'
Python (requests)
import requests
files = {    'caption': (None, 'Hello'),    'photo': open('./avatar.jpg', 'rb'),}
response = requests.post('https://api.example.com/upload', files=files)response.raise_for_status()

-F field=@file は実際のファイルアップロード(Pythonなら open('…', 'rb')、JavaScriptなら FormData.append)になります。@ を含まない -F フィールドは通常のフォーム値です。ブラウザのプレビューではファイルBlob用の TODO プレースホルダが表示されるので、実行時に差し替えてください。

Basic認証 + Cookie

curl
curl 'https://api.example.com/me' \  -u alice:s3cret \  -b 'session=2f9a; theme=dark'
JavaScript (fetch)
const response = await fetch('https://api.example.com/me', {  method: 'GET',  headers: {    'Authorization': 'Basic YWxpY2U6czNjcmV0',    'Cookie': 'session=2f9a; theme=dark'  }});

Basic認証はひとつの Authorization ヘッダーにまとめられます。Cookieは ; で連結されて単一の Cookie ヘッダーとして送信されます。これは実際にcurlがネットワーク上で行っている挙動と同じです。

curl変換でよくあるミス

  • ブログ記事などからスマートクォート(''"")付きでcurlを貼り付けてしまうこと。見た目はクォートですが、シェルのパースを壊します。コンバーターは正規化してくれますが、できれば元のコマンドをそのままコピーしましょう。
  • 本番環境で -k--insecure)を残したままにすること。これはTLS証明書の検証を無効化します。ローカル開発なら問題ありませんが、本番のトラフィックでは危険です。
  • --data-raw--data の挙動の違いを忘れてしまうこと。--data は入力をURLエンコードします。@& を含むJSONボディには --data-raw を使いましょう。

cURL コンバーターのFAQ

コンバーターが対応している言語は?
標準で12種類のターゲットに対応しています。JavaScript (fetch)、TypeScript (fetch)、Node (axios)、Python (requests)、Python (httpx)、Go (net/http)、PHP (curl)、Ruby (Net::HTTP)、Java (HttpClient)、C# (HttpClient)、HTTPie、PowerShell (Invoke-RestMethod) です。すべて同じパース結果から生成されるので、タブの切り替えは一瞬で完了します。
マルチパートのアップロードや -F フラグには対応していますか?
対応しています。-F field=value は通常のフォームフィールドに、-F file=@path は実際のファイルアップロード(JSなら FormData、Pythonなら files=、PHPなら CURLFile など)になります。ファイルパスは TODO プレースホルダとして出力されるので、実行時に FileBuffer、ストリームなどに差し替えてください。
curlコマンドはサーバーに送信されますか?
送信されません。パーサーもコードジェネレーターも、すべてブラウザ内で動きます。Bearerトークン、Cookie、リクエストボディが端末を離れることはなく、*Parsed request* プレビューでも既定でマスクされます。
Windowsのcurlが見た目が違うのはなぜ?
Windowsの curl.exe(CMD/PowerShell)は、行継続に ^ やバッククォート \` を使い、文字列のクォート方法も異なる場合があります。コンバーターは典型的なWindowsパターンを正規化しますが、貼り付け結果がうまく解析されないときは、コマンドを1行にまとめてコピーし直してみてください。
GraphQLリクエストにも対応していますか?
対応しています。GraphQLリクエストは queryvariables を含むJSONボディの POST にすぎないので、curlを貼り付けるとターゲット言語で通常のJSON POST が出力されます。レスポンスの構造({ data, errors })も、ほかのGraphQLクライアントと同じ感覚で扱えます。
Postmanからエクスポートしたcurlを貼り付けてもいい?
もちろんです。Postmanの *Code → cURL* エクスポート(複数行の \ フォーマットを含む)にもしっかり対応しています。ChromeやFirefoxのDevToolsの *Copy as cURL* が出力するcurlも同様にサポートしています。
fetchとaxios、どちらの出力を選べばいい?
プロジェクトですでにfetchを使っているなら、そのままfetchで十分です(ブラウザにも最近のNodeにも標準で入っています)。自動的なJSONパース、リクエストインターセプター、リトライ、進捗イベントといった機能が必要なら、axiosを選びましょう。fetchには標準では含まれない機能です。

詳しく見る

その他の開発者ツール

Coddy programming languages illustration

Coddyでコードを学ぼう

始める