將 curl 轉換為 OCaml

使用 Cohttp 將 curl 指令轉換為 OCaml 程式碼。curl2code 完全透過 WebAssembly 在您的瀏覽器中執行 —— 您的資料將保持私密。若需 Rust,請嘗試我們的 curl 轉 Rust 轉換器。若需 Elixir,請參閱 curl 轉 Elixir。下方提供即插即用的 OCaml 範例。

如何從瀏覽器複製 curl

  1. 1

    開啟開發者工具 (DevTools)

    按下 F12Ctrl+Shift+I 來開啟您的瀏覽器開發者工具。

  2. 2

    前往網路 (Network) 分頁

    點擊 Network 分頁,並執行觸發 HTTP 請求的操作。

  3. 3

    複製為 cURL

    右鍵點擊該請求 → CopyCopy as cURL。然後將其貼在上方。

常見問題解答

什麼是 OCaml Cohttp?

Cohttp 是 OCaml 的標準 HTTP 用戶端與伺服器函式庫。它支援 Lwt(輕量級執行緒)與 Async 後端以進行並行 I/O。可透過 opam install cohttp-lwt-unix 安裝。它為 HTTP 請求提供型別安全且函數式的 API。curl2code 在所有 OCaml 轉換中皆使用 Cohttp。

Cohttp vs ocurl vs piaf — 該使用哪一個?

Cohttp 是支援 Lwt/Async 的標準 OCaml HTTP 函式庫。ocurl 封裝了 libcurl,可從 OCaml 存取所有 curl 功能。piaf 較新且原生支援 HTTP/2。若追求道地的 OCaml 風格請使用 Cohttp,若需要 curl 特定功能則使用 ocurl。關於類似的函數式語言,請參閱 curl 轉 Elixircurl 轉 Clojure

如何在 OCaml 中處理驗證?

在請求中加入 Authorization 標頭:Header.add headers "Authorization" ("Bearer " ^ token)。對於 Basic 驗證,請使用 base64 套件對憑證進行 Base64 編碼。Cohttp 的標頭是不可變的 — 請使用 Header.of_list 建立或串接 Header.add 呼叫。

如何在 OCaml 中傳送 multipart 表單資料?

手動使用 boundary 字串建構 multipart 主體,或使用 multipart_form 等函式庫。設定包含 boundary 的 Content-Type 標頭。Cohttp 的主體是簡單的字串或串流 — 請根據 RFC 2046 格式化 multipart 負載。curl2code 會處理 -F 旗標的轉換。

如何在 OCaml HTTP 請求中處理錯誤?

搭配 Lwt 的 Cohttp 會回傳 promise — 使用 Lwt.catchtry%lwt ... with 語法進行錯誤處理。使用 Response.status response 檢查回應狀態碼。OCaml 的型別系統確保您處理失敗情況。對狀態碼使用模式比對 (pattern matching) 以進行詳盡的處理。

如何在 OCaml 中發送並行 HTTP 請求?

使用 Lwt 後端:使用 Lwt.all [request1; request2] 進行平行執行,或使用 Lwt_list.map_p 對 URL 進行映射。使用 Async:使用 Deferred.all。OCaml 透過 Lwt 或 Async 實現的協作式並行提供了安全且高效的並行 I/O,無需擔心執行緒安全問題。

如何在 OCaml 中設定逾時?

使用 Lwt 時,使用 Lwt.pick [request; Lwt_unix.sleep timeout >>= fun () -> Lwt.fail Timeout] 讓請求與計時器競爭。Cohttp 沒有內建的逾時選項 — 請使用逾時組合器封裝 Lwt promise。對於重試,請實作一個遞減嘗試次數的遞迴函數。

如何在 OCaml 中使用代理伺服器 (Proxy)?

Cohttp 沒有內建代理支援。若有代理需求請使用 ocurl (libcurl 綁定):設定 CURLOPT_PROXY 選項。或者,設定 HTTP_PROXY 環境變數,並手動設定連線以透過代理主機與連接埠路由。

如何在 OCaml 中發送帶有 JSON 主體的 POST 請求?

使用 curl2code 將類似 curl -X POST -H "Content-Type: application/json" -d '{"key":"value"}' URL 的 curl POST 指令轉換為 OCaml。生成的程式碼使用 Client.post ~body:(Cohttp_lwt.Body.of_string json) uri. curl2code 會自動偵測帶有 JSON 內容的 -d/--data 旗標,並在 Cohttp 程式碼中設置適當的 Content-Type 標頭。

如何在 OCaml 中添加 Bearer 權杖授權?

curl -H "Authorization: Bearer YOUR_TOKEN" URL 傳遞給 curl2code,它會生成帶有授權標頭的 Cohttp 程式碼:Header.add headers 'Authorization' 'Bearer YOUR_TOKEN'。curl2code 會從 -H "Authorization: Bearer ..."--oauth2-bearer 旗標中偵測 Bearer 權杖。對於 Basic auth,請使用 -u user:pass

如何在 OCaml 中設置 Content-Type 標頭?

curl2code 將 curl -H "Content-Type: application/json" URL 轉換為帶有正確標頭的 Cohttp 程式碼:Header.add headers 'Content-Type' 'application/json'。對於 -d 數據,curl 預設為 application/x-www-form-urlencoded;對於 -F 表單上傳,它使用 multipart/form-data。curl2code 會將每一項映射到正確的 Cohttp API。

實用連結

curl 指南

將 curl 轉換為其他語言