將 curl 轉換為 Elixir

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

如何從瀏覽器複製 curl

  1. 1

    開啟開發者工具 (DevTools)

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

  2. 2

    前往網路 (Network) 分頁

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

  3. 3

    複製為 cURL

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

常見問題解答

什麼是 Elixir HTTPoison?

HTTPoison 是 Elixir 中最受歡迎的 HTTP 用戶端,建立在 Erlang 的 hackney 函式庫之上。它為 GET、POST、串流和非同步請求提供了一個簡潔、函數式的 API。添加到 mix.exs 依賴中:{:httpoison, "~> 2.0"}。curl2code 將 HTTPoison 作為 Elixir 轉換的預設選項。

HTTPoison vs Req vs Tesla vs Finch — 該使用哪一個?

HTTPoison 是最成熟且廣泛使用的。Req 較新,內建了重試和驗證功能。Tesla 提供類似 Faraday 的中介軟體架構。Finch 是底層、高效能的,適合生產環境使用。對於類似的函數式方法,請參閱 curl 轉 Clojurecurl 轉 Ruby

如何在 Elixir 中處理身份驗證?

將標頭作為字串元組列表傳遞:HTTPoison.get(url, [{"Authorization", "Bearer token"}])。對於 Basic 驗證,使用 Base.encode64/1 編碼 user:pass 並在值前加上 "Basic "。對回應進行模式匹配:{:ok, response}{:error, reason}。curl2code 將 -H-u 旗標轉換為道地的 Elixir 程式碼。

如何在 Elixir 中發送 multipart 表單數據?

使用 {:multipart, parts} 作為主體:HTTPoison.post(url, {:multipart, [{:file, path, {"form-data", [{"name", "file"}, {"filename", "doc.pdf"}]}, []}]})。對於簡單的表單欄位,添加 {"key", "value"} 元組。curl2code 處理 HTTPoison multipart 的 -F 標記。

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

HTTPoison 返回帶標籤的元組:{:ok, response}{:error, reason}。使用 casewith 進行模式匹配:case HTTPoison.get(url) do {:ok, %{status_code: 200}'} -> ... ; {:error, %{reason: reason}'} -> ... end。這是地道的 Elixir 寫法 —— 明確、詳盡的錯誤處理,不使用異常。

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

使用 Task.async/1Task.await/1tasks = urls |> Enum.map(&Task.async(fn -> HTTPoison.get(&1) end)) 然後 results = tasks |> Enum.map(&Task.await/1)。Elixir 的 BEAM 虛擬機能夠高效處理數千個並行程序。對於類似的並行處理,請參閱 curl 轉 Go

如何在 Elixir 中設置逾時?

將選項傳遞給 HTTPoison:HTTPoison.get(url, [], [timeout: 30_000, recv_timeout: 30_000])timeout 是連線逾時,recv_timeout 是響應逾時(均以毫秒為單位)。對於重試,將其包裝在一個遞減嘗試次數的遞迴函數中,或使用 Req 函式庫內建的重試功能。

如何在 Elixir 中使用代理?

將代理選項傳遞給 HTTPoison:HTTPoison.get(url, [], [proxy: {"proxy.host", 8080}])。對於需要驗證的代理,使用 proxy_auth: {"user", "pass"}。HTTPoison 還透過底層的 hackney 函式庫支援 SOCKS5 代理。curl2code 將 -x 標記轉換為 Elixir 代理配置。

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

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

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

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

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

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

實用連結

curl 指南

將 curl 轉換為其他語言