戻る

cURL をコードに変換

開発ツール

読み込み中

ツールを読み込んでいます

ツールのコードは開いたときにのみ読み込まれます。

このツールの処理はすべてブラウザー内で行われ、入力内容はサーバーへ送信されません。

このツールについて

リテラルの cURL コマンドを貼り付け、URL、メソッド、ヘッダー、インライン本文を 3 種類の言語に変換できます。コマンド、言語、マスキング設定を変更するとコードはすぐに更新されます。解析はブラウザー内で行い、cURL の実行、エンドポイントへのアクセス、入力のアップロード、変換履歴の保存は行いません。警告と認証情報のプレースホルダーを確認してから、コードをコピーまたはダウンロードしてください。

主な用途

  • API ドキュメントの対応する cURL サンプルを Fetch、Python Requests、Go net/http のコードに変換する。
  • 引用符付きの JSON POST やフォーム形式のリクエストを、文字列のエスケープを手作業で繰り返さずにアプリへ移す。
  • 認識済みのヘッダーと URL 認証情報を置換した共有用サンプルを作り、本文や独自フィールドを手動確認する。

使い方

  1. 1.完全な HTTP(S) URL を 1 件含む cURL コマンドを貼り付けます。クエリ付き URL は引用符で囲み、POSIX の単一引用符・二重引用符を使ってください。
  2. 2.JavaScript Fetch、Python Requests、Go を選択します。元の値が必要な場合を除きマスキングを有効に保ち、すべての警告を確認してください。
  3. 3.現在のコードを確認し、残っている機密情報を手動で削除します。コピーまたは .js、.py、.go ファイルとして保存し、実行前に環境に合わせて調整してください。

リクエストの変換例

クエリと Accept ヘッダーを持つ GET

curl 'https://example.com/api/items?limit=2' -H 'Accept: application/json'
GET https://example.com/api/items?limit=2
Accept: application/json

ここに示す出力はリクエストの要約であり、実際の応答ではありません。3 つの言語で同じ GET URL と Accept ヘッダーを表現し、エンドポイントにはアクセスしません。

インライン JSON の POST

curl 'https://example.com/api/items' --json '{"name":"demo","active":true}'
POST https://example.com/api/items
Content-Type: application/json
Accept: application/json

{"name":"demo","active":true}

メソッドの明示がなければ --json は POST を生成し、JSON の Content-Type と Accept を既定で設定します。JSON はインライン本文のまま保持され、Schema の検証やフィールドのマスキングは行いません。

フォームのフィールドを GET クエリに移す

curl -G 'https://example.com/search' --data-urlencode 'q=hello world' -d 'page=2'
GET https://example.com/search?q=hello%20world&page=2

-G はデータをクエリへ移し、--data-urlencode は hello world の値をパーセントエンコードします。2 つ目のフィールドは & で結合され、最終的な GET に本文はありません。

よくある変換ミス

  • ? や & を含む URL を引用符なしで貼り付ける:URL 全体を引用符で囲み、シェルの特殊文字をリテラルとして扱ってください。
  • ブラウザーが出力した --compressed、-L、-s、-S などを貼り付ける:未対応オプションは黙って無視せずエラーにします。意味を確認してからコマンドを簡略化してください。
  • -d @payload.json や -F file=@image.png を使う:ファイルの読み込みや multipart アップロードは行いません。対応するインラインテキストを指定するか、アプリでファイル処理を実装してください。
  • -X GET と本文を併用する:クエリのフィールドなら -G を使い、それ以外は API が要求するメソッドを選択してください。
  • すべての機密情報がマスクされると思い込む:JSON のパスワード、独自の X-Secret ヘッダー、session_id クエリは残ります。コピーや共有前にコード全体を確認してください。

制限と注意事項

  • 入力は 100,000 文字以内、HTTP(S) URL は 1 件です。メソッドは大文字の GET、HEAD、POST、PUT、PATCH、DELETE、OPTIONS に限ります。画面に示したオプションのみ受け付ける、限定的な変換ツールです。
  • シェル変数、コマンド置換、パイプ、PowerShell/CMD の引用符、URL 展開、multipart アップロード、ファイル読み込み、プロキシ、TLS、リダイレクトの指定は未対応です。本文付き GET/HEAD、空のヘッダー、ヘッダー削除、Host、Content-Length、Transfer-Encoding、Connection は拒否します。 -A/-e/-b の繰り返しや、別名と同名の -H ヘッダーの併用も拒否します。通常の -H ヘッダーの繰り返しには対応します。
  • マスキングは認識済みヘッダー、URL 認証情報、列挙したクエリ名のみが対象です。本文、独自のヘッダーやクエリ名、パス、フラグメント、元の入力は対象外です。完全な機密情報検出器ではありません。
  • ブラウザーの Fetch には CORS と禁止ヘッダーの規則が適用されます。重複ヘッダーは Fetch で結合され、Python Requests では最後の値が使われ、Go では別々に保持されます。非 ASCII ヘッダーは実行環境で拒否される場合があります。Python には requests が必要です。
  • URL 解析によりホスト名、ポート、パス、エスケープが正規化される場合があります。本文のテキストは UTF-8 で送信するコードになります。リダイレクトは自動追跡せず、ブラウザーでは応答が不透明になる場合があります。cURL とバイト単位で同じ通信動作は保証しません。

よくある質問

どの cURL オプションに対応していますか?

-X/--request、-H/--header、-d/--data、--data-raw、--data-binary、--data-urlencode、--json、-G/--get、-I/--head、-u/--user、-A/--user-agent、-e/--referer、-b/--cookie、--url に対応します。値はリテラルのみで、ファイル参照や一覧にないオプションは拒否します。複数の data フィールドは & で結合し、-G はデータをクエリ文字列に移します。

マスキングは具体的にどの値を置換しますか?

Authorization、Proxy-Authorization、Cookie、X-Api-Key の値、URL のユーザー情報、token、access_token、access-token、accesstoken、refresh_token、refresh-token、refreshtoken、api_key、api-key、apikey、key、password、secret、authorization という名前のクエリ値を、大文字・小文字を区別せず置換します。Basic 認証情報は Authorization ヘッダーになります。本文などは手動で確認してください。

元の cURL は成功するのに Fetch が失敗するのはなぜですか?

ブラウザーには、コマンドラインの cURL にはない CORS、禁止ヘッダー、認証情報の規則があります。コードを生成してもクロスオリジンアクセスや制御されたヘッダーの設定が許可されるわけではありません。API のブラウザー対応とサーバー設定を確認するか、適切なサーバー側環境を使用してください。

変換するとリクエストが送信・保存されますか?

いいえ。解析と生成はローカルで行い、コマンドの実行や変換履歴の保存はしません。コピーは現在のコードをクリップボードへ、ダウンロードはファイルへ書き込みます。出力をマスクしても、入力欄には元のコマンドが残ります。

関連ツール