ToolConvoyToolConvoyv2.6
DEV

cURL を JavaScript に変換 — cURL コマンドを JavaScript に変換

cURL コマンドを JavaScript の fetch() 呼び出しに変換します。ブラウザ版と Node.js 版の両方に対応し、すべてブラウザ内で完結します。アップロードなし、アカウントなし、制限なし。

● ローカル動作 · タブ内で生成ページ読み込み以降のツールによる通信:0件

cURL to JavaScript

Convert cURL commands to JavaScript fetch code. Works entirely in your browser — no uploads.

cURL から JavaScript への変換は、この変換ファミリーの中でもっとも利用されているものです。なぜなら JavaScript は、すべてのブラウザでネイティブに動作する唯一の言語であり、「この API を一度だけ試したい」というスクリプトの最も一般的なターゲットでもあるからです。cURL コマンドは「この HTTP リクエストを送る方法」を表す共通語であり、DevTools からエクスポートされたり、API ドキュメントからコピーされたり、シェルの履歴から貼り付けられたりします。そして JavaScript への変換は、「ターミナルでそのリクエストを見ている状態」から「ブラウザコンソールや Node.js REPL でそれを実行できる状態」へと至る最短ルートです。fetch() API は両方のランタイムにおける現代的标准であり、本ツールの出力はどこにでも貼り付けられる 1 つの async 関数です。

cURL から JavaScript への変換で「自明ではない」のは、ランタイムが分かれている点です。同じ fetch(url, options) 呼び出しはブラウザでも Node.js でも動きますが、周囲のコードは異なります。ブラウザでは fetch が組み込み済み(import 不要)で、Node.js では undici パッケージ、もしくは Node 18+ の組み込み fetch が必要になります。本ツールのランタイムトグルはこの 2 つを切り替え、ブラウザ向け出力は fetch 呼び出しを async 関数で包んだだけのもの、Node.js 向け出力は import を追加するか、グローバルな fetch を直接使うものになります。どちらの出力もミニマルで、各ランタイムの慣用的な書き方に沿っており、サードパーティ依存は不要です。

最終的な使い分けについて:ブラウザコンソールで一度だけ試したい場合は、ブラウザランタイムの出力をそのままコピー&ペーストしてください。Node.js スクリプトが目的であれば、Node.js の出力をコピーして必要な import を追加してください。本番コードに組み込むことが目的なら、出力はあくまで出発点です。2xx 以外のステータスコードに対するエラーハンドリングを追加し、エンドポイントが JSON を返すなら response.json() のパースを追加し、長時間動くページやスクリプトでは AbortController を使ったリクエストキャンセルも検討してください。本ツールを使えば数秒で動作するベースラインが手に入り、その先の本番品質への仕上げは次のステップとなります。

広告

使い方

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

    ブラウザの DevTools(Network タブ > Copy as cURL)、ドキュメントページ、シェル履歴などから cURL コマンドをコピーしてください。パーサーは `-H`、`-d`、`-X`、`-u`、`--cookie` などの一般的なフラグに対応しています。

  2. ランタイムを選択する

    ブラウザの fetch API(モダンブラウザならすべて動作し、依存パッケージは不要)と、`node-fetch` または `undici` パッケージを使う Node.js(サーバーサイド用途)のどちらかを選びます。どちらの場合も出力は同じ `fetch(url, options)` 呼び出しになります。

  3. 出力をカスタマイズする

    デフォルト出力は、単一のレスポンスハンドラーを持つ async/await 形式です。オプションを切り替えることで、response.json() のパース処理、2xx 以外のステータスコードのエラーハンドリング、即時実行関数式(IIFE)によるラップを追加できます。

よくある質問

どのランタイムを選ぶべきですか?

ブラウザの fetch は、クライアントサイドのコード(React コンポーネント、Vue アプリ、バニラ JS のページなど)であれば最適な選択肢です。Node.js の fetch は、サーバーサイドのコード、スクリプト、CLI ツールに適しています。fetch API の使い方は両者でまったく同じで、異なるのは周囲のコード(import やトップレベル await)だけです。

古い XMLHttpRequest API にも対応していますか?

いいえ — 出力は `fetch()` を使うため、こちらは現代の標準となります。`XMLHttpRequest` を必要とするレガシーコードでは、出力を手動で書き換えてください。fetch API は 2015 年以降のすべてのブラウザで、Node.js v18 以降でサポートされています。

headers は fetch にどう渡されますか?

cURL の `-H` フラグで指定したヘッダーは、fetch options の `headers` オブジェクトになります:`headers: { 'Content-Type': 'application/json', 'Authorization': 'Bearer ...' }`。ボディが存在する場合、Content-Type は自動的に設定されます。

Cookie や認証はどう扱われますか?

`-b 'name=value'` は `Cookie` ヘッダーになります。`-u 'user:pass'` は Basic 認証ヘッダーになります。サーバーから設定された Cookie は、ブラウザの fetch では自動的にブラウザに保存されます。Node.js の場合は、`cookie` パッケージを使って明示的に `Cookie` ヘッダーを送る必要があります。

生成されたコードはエラーを処理しますか?

デフォルトの出力は、エラーハンドリングなしの `fetch()` 呼び出しです。「エラーハンドリングを含める」オプションを有効にすると、呼び出しが try/catch でラップされ、2xx 以外のステータスコードで例外を投げ、エラーメッセージ用にレスポンスボディを読むヘルパー関数も追加されます。

制限事項

  • ストリーミング応答には非対応出力はレスポンスボディに `response.json()` を使うため、レスポンス全体をメモリに読み込みます。ストリーミング応答(Server-Sent Events、chunked transfer など)の場合は、ベースの `response.body` である ReadableStream をカスタムの reader と組み合わせて利用してください。
  • JSON の自動パースは行わないデフォルト出力では `response.json()` を呼びません。オプションで呼び出しを追加するか、ご自身のコードに手動で追加してください。呼び出さない場合、レスポンスは `Response` オブジェクトになるため、`.text()`、`.json()`、`.blob()` のいずれかを手動で選ぶ必要があります。
  • Multipart アップロードは手作業が必要Multipart フォームのアップロード(`-F`)は対応していますが、JavaScript 側で `FormData` オブジェクトを構築する必要があります。出力には FormData のセットアップ部分が含まれます。ファイルのアップロードについては、ファイル参照(`formData.append('file', fileInput.files[0])` など)を自分で追加してください。

プラットフォーム別の注意点

macOS
Safari、Chrome、Firefox のブラウザ fetch は設定なしで動作します。Node.js スクリプトの場合、Node 18+ には fetch が組み込まれています。それより前のバージョンでは `npm install node-fetch` と、本ツールが追加しない `require()` 行が必要です。
Windows
Edge、Chrome、Firefox のブラウザ fetch は設定なしで動作します。Windows ターミナルで Node.js スクリプトを動かす場合、fetch の import とトップレベル await の挙動は Linux や macOS と同じで、プラットフォーム固有の落とし穴はありません。
Linux
Linux のどのブラウザでもブラウザ fetch が動作します。Node.js スクリプトの場合、本ツールは標準的な `fetch()` 呼び出しを出力します。サーバーサイドの fetch は、Node 16 と 17 では `--experimental-fetch` フラグが必要ですが、Node 18+ ではそのまま動作します。
CLI
本ツールを動かしている同じライブラリが、npm で `curlconverter` パッケージとしても公開されており、`curlconverter --language javascript` という CLI モードが用意されています。ビルドスクリプトへの組み込みや、保存しておいた cURL コマンドの一括変換に便利です。
Web
完全にクライアントサイドで動作します。ページが読み込み終わった後はオフラインでも動作します。生成される JavaScript は可搬性が高く、ブラウザの script タグ、Node.js モジュール、サーバーレス関数のハンドラーなど、どこにでも貼り付けて使えます。
広告

関連ツール

広告