curlコマンドを貼り付けるだけで、APIリクエストを JavaScript(Fetch / Axios)のコードに変換できます。
// ここにコードが生成されます
TypeScript 型定義
JSONボディを検知すると
型を自動生成します
パース機能
curl → Fetch / Axios 変換ツールとは?
本ツールは、ターミナルやドキュメントで使われるcurlコマンドを、JavaScriptの「Fetch API」や「Axios」の実行コードに即座に変換する開発者向けツールです。 複雑なリクエストヘッダー、認証トークン、JSONボディを含むPOSTリクエストなどを、手動でコードに書き換える手間をゼロにします。さらに、JSONデータが含まれる場合はTypeScriptのインターフェースも自動生成するため、型安全な開発を強力にサポートします。
こんなシーンで便利です
APIドキュメントからの実装
Swaggerや公式ドキュメントにある「サンプルcurl」をコピーして貼り付けるだけで、フロントエンドの実装コードが完成します。
ブラウザ開発者ツールの活用
Chromeの「Copy as cURL」で取得した通信内容を、そのままプロジェクト内で再利用可能なFetch関数へと変換できます。
Postmanからのコード移行
Postmanでテスト済みのリクエストを、プロジェクトのコード(Axios等)へ素早く組み込みたいときの時短ツールとして最適です。
TypeScript導入時の型定義作成
リクエストボディのJSONからTypeScriptのInterfaceを自動生成。型定義を手書きする時間を大幅に削減します。
使い方は簡単 3ステップ
- 「curl コマンドを入力」欄に、変換したいcurlコマンドを貼り付けます。
- 「Fetch」または「Axios」から、生成したいライブラリを選択します。
- 「Copy Code」ボタンを押して、生成されたasync/await形式のコードをコピーします。
※マルチライン(\)形式のcurlや、複雑なシングルクォートのネストにも対応しています。
ご利用時の注意点
- すべてのオプションには未対応:-X, -H, -d, --data-raw などの主要なオプションに対応していますが、詳細なネットワーク設定(プロキシ等)は無視される場合があります。
- async/await前提:生成されるコードはモダンなES6+の async/await 形式です。古い環境(IE等)で使用する場合はBabel等での変換が必要です。
- JSON形式の確認:-d パラメータで渡すデータが正しいJSON形式でない場合、TypeScriptの型生成が正しく行われないことがあります。
curlオプション・変換対応表
主要なcurlコマンドのオプションが、JavaScriptコード(Fetch/Axios)でどのように変換されるかの目安です。
| curlオプション | 変換後の役割 | Fetch / Axios での対応 |
|---|---|---|
| -X, --request | HTTPメソッドの指定 | method: 'POST' や 'PUT' として出力 |
| -H, --header | リクエストヘッダー | headers: { 'Content-Type': '...' } に変換 |
| -d, --data | リクエストボディ | body: JSON.stringify() または data: { ... } |
| -u, --user | 認証(Basic認証) | Authorization: 'Basic ...' ヘッダーを自動生成 |
| -G, --get | GETリクエスト強制 | データをクエリパラメータとしてURLに結合 |
| -k, --insecure | SSL証明書検証スキップ | ブラウザ環境(Fetch)ではセキュリティ上無視されます |
| --data-raw | 生のデータ送信 | JSON文字列として解析し、オブジェクトへ変換 |
| -v, --verbose | 詳細ログ出力 | デバッグ用のため、生成コードからは除外 |
【開発効率を最大化するTips】
ChromeやEdgeのデベロッパーツール(Networkタブ)でリクエストを右クリックし、「Copy as cURL」を選択して取得したコマンドを本ツールに貼り付けるのが最も確実な方法です。
【TypeScript型定義の自動生成について】
JSON形式のデータが含まれる場合、本ツールは自動的に interface ResponseData などの型定義を生成します。 これにより、「curl 変換 TypeScript」や「APIレスポンス 型作成」の手間を大幅に短縮し、型安全なAPIクライアント実装をサポートします。
※複雑なシェル変数を含むcurlや、バイナリ送信(--data-binary)など、一部ブラウザのJavaScript環境では再現が難しいオプションは、変換時に正規化またはスキップされる場合があります。
APIクライアント実装を効率化するアーキテクチャ設計とエラーハンドリングの実践手法
本ツールで変換したFetchやAxiosのコードを、実際のフロントエンド開発プロジェクトへクリーンに組み込み、堅牢なAPI通信レイヤーを構築するための応用ノウハウです。
保守性を高めるAPIクライアントのモジュール化と環境変数の集約管理
変換されたコードをコンポーネント内へ直接記述すると、エンドポイントの変更や認証ロジックの修正時に運用の手戻りが発生します。
実務では、生成コードをAPIサービス層(services/api.ts)として分離し、ドメイン部分をprocess.env.NEXT_PUBLIC_API_BASE_URLなどの環境変数へ置き換えてください。
リクエストクラスや共通インスタンスを生成してラップすることで、接続先環境(開発・ステージング・本番)の切り替えが容易になります。
Axiosインターセプターを活用した共通認証トークン挿入と共通エラーハンドリング
本ツールで生成した個別のAuthorizationヘッダーをすべての通信関数に埋め込むと、トークンのリフレッシュや期限切れの処理が重複してしまいます。
Axiosを採用する場合はaxios.interceptors.request.useを利用し、リクエスト送信直前にストレージから最新のJWT(JSON Web Token)を取得して一括挿入する機構を共通化してください。
同様にレスポンスインターセプターでステータスコード401や503を一元監視し、自動ログアウトやグローバルなトースト通知をフックするのがモダンな設計パターンです。
Fetch APIにおけるネットワークエラーとHTTPステータスエラーの正確な識別ロジック
Fetch APIは、Axiosとは異なり400番台や500番台のHTTPエラーが発生しても、プロミス(Promise)を拒否(reject)せず、catchブロックへ移行しないという仕様上の注意点があります。
そのため、レスポンスを受け取った直後に必ずif (!response.ok)のバリデーションを挟み、明示的にエラーをスロー(throw new Error)する実装を追加してください。
これにより、DNSエラーなどの通信切断(ネットワークエラー)と、サーバー側から返却されたAPIエラーを厳密に区別したハンドリングが可能になります。
APIレスポンスのタイムアウト設定とAbortControllerによるリクエストキャンセル実装
ブラウザ環境のFetch APIにはデフォルトのタイムアウト時間が設定されていないため、バックエンドの処理が遅延した際にユーザー画面がハングアップする原因となります。
低遅延なUI体験を提供するには、AbortControllerのインスタンスを生成し、その信号(signal)をFetchのオプションへ渡すとともに、setTimeoutを用いて指定時間(例:5000ms)経過後に強制終了(abort)させる処理を組み込んでください。
また、画面遷移(アンマウント)時に進行中の不要なAPIリクエストを破棄してクライアントのメモリリソースを解放する際にも、このキャンセル処理が必須となります。
よくある失敗と対策
ブラウザ開発者ツール(デベロッパーツール)から「Copy as cURL」したマルチライン形式の改行バックスラッシュ(\)による構文エラー・変換失敗
ChromeやSafari、FirefoxのNetworkタブから「Copy as cURL (bash)」や「Copy as cURL (cmd)」でエクスポートしたAPIリクエストには、改行コードやエスケープ用のバックスラッシュ、ダブルクォーテーションのネストが複雑に含まれています。これらをオンラインのコンバーターや整形ツールを使わずに手動でFetch APIのmethod、headers、bodyオブジェクトへと書き換えると、高確率で閉じカッコの付け忘れや構文エラー(SyntaxError)の原因になります。
💡 対策・解決策を見る▼
HTTP POSTリクエストのContent-Type(application/json)とJSON.stringifyの記述漏れによるAPIリクエスト通信バグ
curlの「-d」や「--data-raw」オプションで渡されたペイロードをJavaScriptのFetch APIで実装する際、リクエストヘッダーに「'Content-Type': 'application/json'」を設定し忘れたり、bodyプロパティにオブジェクトのまま渡してしまい、サーバー側で400 Bad Requestや415 Unsupported Media Typeのエラーが発生する開発ミスが頻発します。Axios(自動JSONシリアライズ)とFetch API(JSON.stringifyが必要)の仕様差異の誤認もバグの原因となります。
💡 対策・解決策を見る▼
認証トークン(Bearer Token・Basic認証)のヘッダー結合ミスによる401 Unauthorized認証エラー
curlコマンドの「-H 'Authorization: Bearer token'」や「-u user:pass」オプションを、JavaScript(Fetch/Axios)のコードへと移植する際に、スペースの欠落、タイポ、またはプレフィックス(Bearer)の付与忘れにより、API認証(401 Unauthorized)を突破できずデバッグに長時間を浪費する失敗ケースが後を絶ちません。特にBasic認証(-u)のBase64エンコード処理(btoa関数)の手書き実装はバグの温床です。
💡 対策・解決策を見る▼
リクエストボディ(JSONデータ)の型手書きによるTypeScript型定義(Interface)のミスマッチと開発工数の増大
大規模なJSONオブジェクトを持つPOST/PUTリクエストをcurlからTypeScript環境へと移行する際、リクエストデータ(Payload)やレスポンスデータの型定義(interfaceやtype)を手動で書き起こすと、プロパティ名のタイポ、オプショナル属性(?)の判定ミス、型ミスマッチ(stringとnumberの誤認)が発生し、TypeScriptのコンパイルエラーを引き起こします。
💡 対策・解決策を見る▼
よくある質問(FAQ)
Q.入力したcurlコマンドから社外秘のAPIキーやトークン情報が漏洩することはありませんか
A. データ漏洩の心配は一切ありません。本ツールは入力されたcurlコマンドの解析やコード生成をすべてブラウザ内のメモリ上でローカル処理しています。データが外部のサーバーへ送信または保存される仕組みはないため、公開前のAPIキーや機密情報を含むリクエストでも安全に変換できます。
Q.複数行にまたがるマルチライン形式のバックスラッシュがあるコマンドもそのまま貼り付けられますか
A. はい、そのまま貼り付け可能です。Linuxのシェルスクリプトやブラウザの開発者ツールからコピーした、行末にバックスラッシュが含まれるマルチライン形式のcurlコマンドであっても、自動的にエスケープや改行を正規化して正確にFetchやAxiosのコードへ変換します。
Q.Basic認証のオプションを指定した場合の認証ヘッダーはどのように出力されますか
A. ハイフンuオプションによるユーザー名とパスワードの指定がある場合は、JavaScript環境で動作するBase64エンコード処理を反映したAuthorizationヘッダーを自動生成します。手動でエンコード関数を記述する手間なく、そのまま認証が必要なAPIリクエストコードとして利用できます。
Q.複雑なリクエストパラメータが含まれるGETリクエストの変換にも対応していますか
A. はい、対応しています。ハイフンdやハイフンGのオプションを組み合わせたGETリクエストの場合、渡されたデータオブジェクトをURLのクエリパラメータとして適切に結合した形式のコードを出力するため、複雑な検索条件を伴うAPIエンドポイントの移植も容易です。
Q.データにJSONではない生の文字列を指定している場合でも型定義は生成されますか
A. ハイフンdなどのパラメータに渡されたデータが正しいJSON形式ではない場合、TypeScriptの型定義インターフェースは自動生成されません。型定義の生成ロジックは有効なJSON構造の解析を前提としているため、生の文字列の場合は通常のコード変換のみが行われます。
あなたの声で、
このツールをより鋭く。
「こんな機能が欲しい」「ここを直してほしい」といったご意見や、新しいツールのリクエストを募集しています。エンジニアが直接目を通し、開発の参考にさせていただきます。