curl 変換ツール
開発curl コマンドを fetch、axios、Python、Go、Java、HTTPie にリアルタイム変換。多言語タブ切り替え。
リモート URL の取得は行いません。JSON を直接貼り付けてください。
このページの内容
curl 変換ツールとは?#
curl は、HTTP が持つ最も普遍言語に近いものです。すべてのブラウザの DevTools パネル、すべての API ドキュメントサイト、すべてのサポートチケットが最終的に curl コマンドを手渡してきます — 「copy as cURL」はリクエストがブラウザからバグ報告に旅する方法です。問題は、貼り付けた curl コマンドが、コードベースで実際に実行できるものには稀であることです。サービスは Python、Go、ブラウザ側の fetch で書かれており、curl をシェル呼び出しするのではなく、自分が使う HTTP クライアントの同等の呼び出しが欲しいのです。
本ページはそのギャップを埋めます。左に curl コマンドを貼り付けると、シェル構文 — フラグ、引用符、行継続、ヘッダー、ボディ、認証 — を構造化リクエストに解析し、6 つのターゲットの同等コードを一度に発行します。ブラウザ fetch、axios、Python requests、Go net/http、Java HttpURLConnection、そして httpie。タブを横断して読み、スタックに合うものをコピーして進みます。
解析は完全にブラウザ内で動きます。貼り付けたコマンドはサーバーに触れません。実際の curl コマンドは頻繁に bearer トークン、basic 認証情報、署名付き cookie を含むため、これは重要です。
使い方#
- 左の入力ペインに curl コマンドを貼り付けます。先頭の
curlという単語を貼り付けても省略しても構いません。どちらも動作します。末尾\で結合された複数行コマンドも、各フラグが 1 行に置かれたターミナルから直接コピーしたコマンドも理解されます。 - 形状を先に見たい場合はサンプルで現実的な例を読み込み、クリアでペインを消去します。
- 出力上のタブバーからターゲット言語を選びます。fetch、axios、python、go、java、httpie。6 つすべてが同じ解析から生成されるため、タブ切り替えは瞬時で、再実行はありません。
- パネル内の生成コードを読みます。タブバーのコピーで取得します。
- ペインの下のステータスバーを見ます。パーサがモデル化しないフラグ(出力ファイルへのリダイレクト、プロキシ設定)に当たった場合、サイレントに落とすのではなく明示的にその旨を述べます。
主な機能#
- 正規表現の掃き出しではない、本物のシェルトークナイザ。 単一引用符、二重引用符、ANSI-C の
$'...'クォート(\n、\t、\x41、éエスケープ付き)、バックスラッシュ改行の行継続、そして"a\b"と'a\b'の違いを、すべてbashと同じように処理します。空白で分割する素朴な変換器は、ヘッダー値にスペースが入った瞬間に壊れます。 - 1 解析から 6 ターゲット。
fetch、axios、Python、Go、Java、httpieを並べて見ます。fetchとaxiosのどちらに手を伸ばすか迷っているなら、同じ認証ヘッダーの処理を 2 クリックで比べられます。 - ボディの知性。 リクエストが
Content-Type: application/jsonを運ぶとき、Python エミッタは辞書形状のボディが正しく送られるようjson=キーワードで渡します。それ以外はdata=にフォールバックします。 - basic 認証の一度のデコード。
-u user:passフラグは fetch ではbtoa("user:pass")、axios ではauthブロック、requests ではauth=タプル、Go ではSetBasicAuthになります — それぞれの言語が期待する慣用法で。 - 不明フラグは飲み込まず報告。
-o output.txtや--proxyはステータスバーにunknown argsとして表面化するため、変換が実際には落としたリダイレクトやプロキシを捕捉したとサイレントに誤解させられません。 - バックエンドなし、漏洩なし。 コマンドはページ自身のスクリプトでインメモリにトークン化されます。貼り付けたトークンをどこかへ運ぶネットワーク呼び出しはありません。
実例#
サンプルを読み込むか(ブラウザ DevTools が JSON POST の「copy as cURL」で生成するのと同等のものを貼り付けます)。
curl -X POST https://example.com/api/v1/users \
-H 'Authorization: Bearer tok' \
-H 'Content-Type: application/json' \
-d '{"name":"Alice","role":"admin"}'
fetch タブに切り替えると次が得られます。
const response = await fetch("https://example.com/api/v1/users", {
method: "POST",
headers: {
"Authorization": "Bearer tok",
"Content-Type": "application/json",
},
body: "{\"name\":\"Alice\",\"role\":\"admin\"}",
});
python タブに切り替えます。Content-Type が JSON のため、ボディは json= キーワードを通ります。
import requests
url = 'https://example.com/api/v1/users'
headers = {
'Authorization': 'Bearer tok',
'Content-Type': 'application/json',
}
payload = '{"name":"Alice","role":"admin"}'
response = requests.request('POST', url, headers=headers, json=payload)
print(response.status_code)
同じコマンドは go、java、axios、httpie タブの直下にも即座に利用できます — 1 回の貼り付けで 6 つの変換が得られます。
よくある質問#
コマンドに「unknown args」と出ます。何をスキップしましたか?#
パーサはリクエストを記述するために使う curl フラグをモデル化します — メソッド、URL、ヘッダー、ボディ、basic 認証、--compressed、-k、-L。curl 自身の挙動を記述するフラグ(ボディをファイルへ書く -o、--proxy、--connect-timeout、--cert など)は、fetch 呼び出しに同等物がないため翻訳されません。それらは収集され、意図的に落とされたものであり失われたのではないことを知らせるため、ステータスバーに表示されます。
$'...' ANSI-C クォートを使うコマンドも変換できますか?#
はい。ターミナルからコピーしたヘッダーやボディは、\n や \t のようなエスケープシーケンスがシェルに解釈されるよう、時に $'...' で包んで届きます。トークナイザは ANSI-C クォートを理解し、\n、\t、\xHH、\uHHHH、\UHHHHHHHH と単純エスケープをデコードするため、変換器が見るバイトは curl が送ったであろうバイトと一致します。
なぜ Python 出力は時に json= で時に data= ですか?#
エミッタがヘッダーを見るためです。Content-Type: application/json が存在するとき、ボディを json= キーワードで渡します。これにより requests がヘッダーを設定しペイロードを正しくエンコードします。他の content type(フォームエンコード、プレーンテキスト、マルチパート)では data= にフォールバックします。そこで json= を強制するのは間違っているためです。
リクエストを送信してくれますか?#
いいえ、それは意図的です。本ツールはコマンドをコードに翻訳するだけで、決して実行しません。生成されたスニペットは、あなた自身のプログラム内で、あなた自身の認証情報の下で、ライブに何かをする前に検査できる形で走ります。