將 curl 轉換為 Clojure
curl2code 使用 clj-http 將 curl 指令轉換為 Clojure 程式碼。轉換過程透過 WebAssembly 在您的瀏覽器中執行,確保完全隱私。若需 Elixir,請參考我們的 curl 轉 Elixir 轉換器。若需 Java,請參閱 curl 轉 Java。下方是實用的 Clojure 範例。
如何從瀏覽器複製 curl
- 1
開啟開發者工具 (DevTools)
按下 F12 或 Ctrl+Shift+I 來開啟您的瀏覽器開發者工具。
- 2
前往網路 (Network) 分頁
點擊 Network 分頁,並執行觸發 HTTP 請求的操作。
- 3
複製為 cURL
右鍵點擊該請求 → Copy → Copy as cURL。然後將其貼在上方。
常見問題解答
什麼是 clj-http?
clj-http 是 Clojure 中最受歡迎的 HTTP 用戶端函式庫,包裝了 Apache HttpComponents。它提供了一個地道的、數據驅動的 API,具有自動 JSON/EDN 解析、cookie 管理和連線池功能。添加到 project.clj:[clj-http "3.x"]。curl2code 為所有 Clojure 轉換使用 clj-http。
clj-http vs http-kit vs aleph — 該使用哪一個?
clj-http 是同步的、功能豐富且使用最廣泛。http-kit 輕量且支援非同步,非常適合也需要發送 HTTP 調用的伺服器。aleph 建立在 Netty 之上,用於高效能的非同步 I/O。對於類似的函數式語言,請參閱我們的 curl 轉 Elixir 轉換器 或 curl 轉 OCaml。
如何在 Clojure 中處理身份驗證?
對於 Bearer 驗證,添加標頭:(client/get url {:headers {"Authorization" "Bearer token"}'})。對於 Basic 驗證,使用內建選項:{:basic-auth ["user" "pass"]}。clj-http 還支援 OAuth 和摘要驗證。curl2code 將 -u 和標頭標記轉換為地道的 Clojure map。
如何在 Clojure 中發送 multipart 表單數據?
使用 :multipart 選項:(client/post url {:multipart [{:name "file" :content (clojure.java.io/file "doc.pdf")} {:name "desc" :content "My file"}]})。clj-http 會自動處理 boundary 生成和 Content-Type。curl2code 將 -F 標記轉換為此 Clojure 模式。
如何在 Clojure 中處理 HTTP 錯誤?
預設情況下,clj-http 會在非 2xx 響應時拋出 ExceptionInfo。使用 {:throw-exceptions false} 禁用此功能以獲取響應 map。檢查 (:status response)。使用 try/catch 配合 ex-data 從異常中提取響應。
如何在 Clojure 中發送非同步 HTTP 請求?
使用帶有 clj-http 的 {:async? true},它會返回一個 future。或者使用 http-kit:(http/get url callback)。對於並行請求,使用 pmap 或 core.async 通道。Clojure futures 運行在 JVM 執行緒池上。對於類似的並行處理,請參閱 curl 轉 Java。
如何在 Clojure 中設置逾時?
傳遞逾時選項:(client/get url {:connection-timeout 10000 :socket-timeout 30000})。數值以毫秒為單位。對於重試,使用 :retry-handler 選項或將其包裝在具有指數退避的自定義重試函數中。這些對應於 curl 的 --connect-timeout 和 --max-time。
如何在 Clojure 中使用代理?
在選項 map 中設置代理:(client/get url {:proxy-host "proxy" :proxy-port 8080})。對於需要驗證的代理:添加 :proxy-user 和 :proxy-pass。clj-http 還支援 SOCKS 代理。curl2code 將 -x 和 --proxy 標記轉換為正確的 Clojure 代理選項。
如何在 Clojure 中發送帶有 JSON 主體的 POST 請求?
使用 curl2code 將類似 curl -X POST -H "Content-Type: application/json" -d '{"key":"value"}' URL 的 curl POST 指令轉換為 Clojure。生成的程式碼使用 (client/post url {:content-type :json :body (json/generate-string data)})。curl2code 會自動偵測帶有 JSON 內容的 -d/--data 旗標,並在 clj-http 程式碼中設置適當的 Content-Type 標頭。
如何在 Clojure 中添加 Bearer 權杖授權?
將 curl -H "Authorization: Bearer YOUR_TOKEN" URL 傳遞給 curl2code,它會生成帶有授權標頭的 clj-http 程式碼::headers {'Authorization' 'Bearer YOUR_TOKEN'}。curl2code 會從 -H "Authorization: Bearer ..." 和 --oauth2-bearer 旗標中偵測 Bearer 權杖。對於 Basic auth,請使用 -u user:pass。
如何在 Clojure 中設置 Content-Type 標頭?
curl2code 將 curl -H "Content-Type: application/json" URL 轉換為帶有正確標頭的 clj-http 程式碼::content-type :json。對於 -d 數據,curl 預設為 application/x-www-form-urlencoded;對於 -F 表單上傳,它使用 multipart/form-data。curl2code 會將每一項映射到正確的 clj-http API。