使用方式
- 將請求複製為 curl,例如從瀏覽器的開發者工具(Network 分頁按右鍵,選擇「Copy as cURL」)或從 API 文件複製。
- 將它貼到輸入框中。使用 \ 的換行接續也沒問題。
- 選擇 JavaScript fetch、Node.js axios、Python requests 或 PHP cURL。
- 閱讀程式碼下方的任何注意事項,然後複製或下載結果。
運作方式
此轉換器會先以 POSIX shell 的方式將命令拆解為字詞:能辨識單引號、含反斜線跳脫的雙引號、$'…' 字串,以及反斜線行接續。如 $TOKEN 等 shell 變數不會展開,而會保留為文字。
支援的 curl 選項:URL(或 --url)、-X/--request、-H/--header、-d/--data、--data-ascii、--data-raw、--data-binary、--data-urlencode、--json、-F/--form 與 --form-string(欄位及 @file 上傳並含 ;type=)、-u/--user、-G/--get、-I/--head、-A/--user-agent、-e/--referer、-b/--cookie(Cookie 字串)、-L/--location 和 --compressed。短選項可以合併使用,例如 -sSL;值也可以接在選項後,例如 -XPOST。
規則與 curl 一致:多個 -d 值會以 & 串接;資料會讓請求成為 POST,除非 -X 或 -G 另有指定;-G 會將資料以查詢字串的形式附加到 URL;--json 會將 Content-Type 與 Accept 標頭設為 application/json。當主體是 JSON 且 Content-Type 如此聲明時,產生的程式碼會傳送實際物件(Python 使用 json=,PHP 使用 json_encode 的陣列),而不是跳脫後的字串。若是 multipart 表單,Content-Type 標頭會交由程式庫處理,以產生正確的 boundary。
-k/--insecure 會刻意忽略,並附上說明。只會改變 curl 本身輸出的選項(-s、-S、-v、-i、-o、--fail 等)會被忽略並附上說明。任何其他選項都會產生指名該選項的明確錯誤,而不是默默產生行為不同的程式碼。仍有一項差異:curl 只在指定 -L 時跟隨重新導向,而 fetch、axios 與 requests 預設會跟隨;PHP 程式碼只在指定 -L 時跟隨。
此工具只會撰寫程式碼,絕不實際發送請求,因此命令中的 token 與密碼不會被用於任何地方。
範例
在 Python 中重現瀏覽器請求
從 Chrome 的「Network」分頁將失敗的 API 呼叫複製為 cURL,再轉換成 Python requests。標頭、Cookie 與 JSON 主體都會保留,方便你在腳本中重現錯誤。
在 Node.js 中使用 API 文件
API 參考文件顯示「curl -u key: https://api.example.com/v1/charges -d amount=2000 -d currency=eur」。axios 版本會使用 auth: { username: "key", password: "" } 與表單編碼的主體。
在 PHP 中上傳檔案
「curl -F 'file=@invoice.pdf;type=application/pdf' -F 'note=March' https://x.io/upload」會轉成 CURLOPT_POSTFIELDS,搭配 new CURLFile('invoice.pdf', 'application/pdf') 與 note 欄位。
常見問題
這個工具會送出我的請求嗎?
不會。它只會解析指令文字並產生程式碼。不會發出任何請求,因此指令中的 API 金鑰或 Cookie 不會被使用或儲存。
為什麼不轉換 -k/--insecure?
關閉憑證檢查會讓連線容易被攔截。產生的程式碼會保留檢查;如果伺服器的憑證不受信任,請改為修正憑證或信任庫。
為什麼會出現「option is not supported」?
轉換器只會轉換能精確重現其含義的選項。Proxy、用戶端憑證、cookie jar 和類似選項會被拒絕,以免產生與 curl 行為不同的程式碼。
是否支援 Windows cmd 指令?
以「cURL (bash)」格式複製的指令效果最好。Windows cmd 使用 ^ 作為換行接續符號,且引號規則不同;行尾的 ^ 可被接受,但其他 cmd 跳脫字元可能不受支援。
隱私權
指令只會在您的瀏覽器中解析,不會傳送任何請求。不會上傳、儲存或納入分析。