「把這個 cURL 寫進程式碼裡好麻煩啊……」

在瀏覽器開發者工具中用「Copy as cURL」複製指令來測試 API。在終端機裡執行沒問題,但一旦要放進自己的程式(Python、JavaScript,什麼都好)裡,就得重新查一次那個函式庫的標頭與 JSON body 該怎麼寫。

cURL 轉換器 能把貼上的 curl 指令轉換成您指定語言的 HTTP 請求程式碼,完全在瀏覽器內完成——因此含有驗證權杖的指令不會外流。

cURL 轉換器:將 cURL 指令瞬間轉換為各種程式語言

支援的語言

const converters: Record<string, (curl: string) => string> = {
    python:     curlConverter.toPython,      // requests
    node:       curlConverter.toNodeFetch,
    javascript: curlConverter.toJavaScript,  // fetch
    go:         curlConverter.toGo,
    rust:       curlConverter.toRust,
    php:        curlConverter.toPhp,
    java:       curlConverter.toJava,
    r:          curlConverter.toR,
    elixir:     curlConverter.toElixir,
    dart:       curlConverter.toDart,
    json:       curlConverter.toJsonString,  // 不是程式碼,而是結構化的請求資料
};

支援 Python(requests)、JavaScript(fetch)、Go、Rust、PHP、Java、R、Elixir、Dart。

使用方法

  1. 從瀏覽器開發者工具或 API 文件複製 curl 指令
  2. 貼到 cURL 轉換器
  3. 選擇目標語言
  4. 確認 AuthorizationContent-Type、請求 body 是否正確反映出來
curl -X POST "https://api.example.com/users" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name":"Taro","role":"admin"}'

這段指令包含 POST 方法、驗證標頭、JSON body。產生的程式碼應該要用目標函式庫慣用的寫法,把這些內容都表現出來。

為什麼需要真正的解析器,而不是正規表示式

curl 指令是用 shell 語法寫的:

curl 'https://api.example.com/v1/items?q=a b' \
  -H "Authorization: Bearer $TOKEN" \
  -d '{"name": "it'\''s"}'

巢狀的單/雙引號、'\'' 這種跳脫技巧、換行接續、環境變數,還有兩百多種 curl 參數——想用正規表示式處理這一切,注定是打不贏的仗。這個工具背後使用的函式庫 curlconverter,會先把指令當成 shell 語法解析成正確的語法樹,再從中擷取請求的語意資訊(方法、URL、標頭、body),最後才針對各語言產生程式碼。正確地以 shell 語法解析,正是轉換品質的根基。

隱藏的實用功能:JSON 輸出

把目標語言選成 json,產生的不是程式碼,而是這個請求的結構化拆解結果(方法/URL/標頭/body)。當您想確認「這段 curl 到底在傳送什麼」而不是想讀程式碼時,結構化的拆解結果往往更清楚。

轉換後該檢查的地方

自動轉換是很好的起點,但正式使用前請確認以下幾點:

  • 把 API 金鑰、權杖移到環境變數
  • 把 URL 抽出到設定檔或常數
  • 設定逾時時間
  • 加上錯誤回應的處理
  • 加上 JSON 解析與型別定義
  • 區分正式環境與開發環境的端點

特別是 curl 指令中的 Authorization 標頭,絕對不要直接寫死在程式碼裡。用來快速驗證是沒問題,但正式上線前務必把機密資訊移到環境變數或密鑰管理服務中。

為什麼完全在瀏覽器內處理

curl 指令經常帶有 Authorization 標頭、Cookie,或是內部 API 的網址。為了轉換而把這些資料送到外部服務,等於本末倒置,因此我們把 curlconverter 直接打包在客戶端執行,讓輸入內容完全不會經過網路傳送

常見問題

「Copy as cURL」複製出來的指令也能用嗎?

可以。從 Chrome DevTools 等工具複製出來的 curl(含標頭與 Cookie)都能正確轉換。不過如果指令中含有 Cookie 或權杖,分享結果前請務必先遮蔽處理。

可以轉換成 Python 的 requests 或 JavaScript 的 fetch 嗎?

可以。支援 Python(requests)、JavaScript(fetch)、Go、Rust、PHP、Java、R、Elixir、Dart 等多種語言與函式庫,請依專案慣例選擇輸出格式。

轉換出來的程式碼可以直接用在正式環境嗎?

作為驗證行為的起點很方便,但正式環境的實作建議加上錯誤處理、逾時設定,以及妥善的憑證管理。請把產生的程式碼當成骨架,再依專案設計調整。

貼上的 curl 指令會被傳送出去嗎?

不會。轉換完全在瀏覽器內完成,curlconverter 函式庫是打包在客戶端執行的,指令不會被傳送到伺服器。

總結

  • 要正確解析 curl 需要以 shell 語法解析,光靠正規表示式會遇到極限
  • json 輸出模式很適合用來理解一個請求究竟送出了什麼
  • 因為指令經常帶有權杖,所以完全在客戶端執行這件事很重要
  • 產生的程式碼只是骨架,記得自行加上環境變數化的憑證與錯誤處理

讓您的 API 串接工作,從一開始就更順手。