curlコマンドをfetch()コードへ変換する

APIドキュメントの例がcurl、プロジェクトで必要なのはJavaScript。ヘッダーやボディを打ち直すよりコマンドを変換します。

このガイドで使う道具

やりたいこと

APIドキュメントの例はたいていcurlです。同じリクエストをfetch()で組み直すにはURL・ヘッダー・メソッド・ボディを1つずつ写す必要があり、まさにそこでタイポが紛れ込みます。curl→fetch変換はコマンドを解析して、そのまま貼れるfetchコードを出します。

コマンドの変換

curlコマンドを貼ります。バックスラッシュで複数行に分かれていても大丈夫です。出力は整理されたオプションオブジェクトつきのfetch()呼び出しで、メソッド・ヘッダー・ボディ・認証が適用されます。

  • 対応フラグ: -X/--request、-H/--header、-d/--data系、-u/--user、-A/--user-agent、-e/--referer、-b/--cookie、-F/--form、-L/--location、-k/--insecure、--url。
  • 未知のフラグはスキップし、出力の先頭に一覧します。何が捨てられたか推測しなくて済みます。
  • `@file`参照は貼ったコマンドからは読めません。コード内の添付位置を示すので、自分でファイルを付けます。

具体例

`curl -X POST https://api.example.com/users -H 'Authorization: Bearer TOKEN' -H 'Content-Type: application/json' -d '{"name":"Ana"}'`は`fetch("https://api.example.com/users", { method: "POST", headers: { "Authorization": "Bearer TOKEN", "Content-Type": "application/json" }, body: '{"name":"Ana"}' })`になります。末尾に`.then(r => r.json())`を付ければ動きます。

対応範囲

ブラウザ互換の呼び出しを生成します。-k/--insecureは注記しますがブラウザではTLS検証を外せず、-Lはfetch側のリダイレクト処理の話です。出力はES2020相当のfetchなので、axiosやNodeのhttpsを使う場合はリクエストの参考形として扱ってください。10万文字まで。