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万文字まで。