將 curl 轉換為 Rust

curl2code 使用 reqwest crate 將 curl 指令轉換為 Rust 程式碼。轉換過程透過 WebAssembly 在您的瀏覽器中執行,確保完全隱私。若需 Go,請參考我們的 curl 轉 Go 轉換器。若需 C,請參閱 curl 轉 C。下方是包含 async/await 的實用 Rust 範例。

如何從瀏覽器複製 curl

  1. 1

    開啟開發者工具 (DevTools)

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

  2. 2

    前往網路 (Network) 分頁

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

  3. 3

    複製為 cURL

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

常見問題解答

什麼是 Rust reqwest?

reqwest 是 Rust 中最受歡迎的 HTTP 客戶端,建立在 hyper 之上。它提供阻塞(blocking)和非同步(async)API、透過 serde 進行自動 JSON 序列化、TLS、Cookie 處理和代理支援。使用 cargo add reqwest --features json 加入。它是 curl2code 用於 Rust 轉換的預設函式庫。

reqwest vs hyper vs ureq — 我應該使用哪一個?

reqwest 是大多數專案的首選 — 高階、功能豐富且支援非同步。hyper 是較底層的函式庫,提供最大程度的控制(reqwest 即建立在其之上)。ureq 是一個極簡的、僅限阻塞的客戶端,不依賴非同步執行環境。關於類似的標準函式庫方法,請參閱 curl 轉 Gocurl 轉 C

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

對於 Bearer:client.get(url).bearer_auth(token)。對於 Basic:client.get(url).basic_auth(user, Some(pass))。或者使用 .header("Authorization", value) 手動設定標頭。curl2code 會將 -u-H 'Authorization: ...' 旗標轉換為相應的 reqwest 方法。

如何在 Rust 中發送多部分表單資料?

使用 reqwest::multipart::Form:使用 Form::new() 建立,使用 .text("key", "value") 加入文字欄位,並使用 .file("field", path).await? 加入檔案。傳遞給 client.post(url).multipart(form)。curl2code 會處理 reqwest 多部分的 -F 旗標。

如何在 Rust 中處理 HTTP 錯誤?

reqwest 回傳 Result,成功時包裝 Response,失敗時包裝 reqwest::Error — 使用 ? 運算子進行傳播。檢查 response.status().is_success() 或呼叫 response.error_for_status()?,後者會將非 2xx 狀態碼轉換為錯誤。Rust 的型別系統可確保在編譯時顯式處理所有錯誤路徑。

reqwest 需要哪種非同步執行環境(async runtime)?

reqwest 預設需要 tokio 執行環境。在您的 main 函式加上 #[tokio::main] 註解。若要在沒有非同步執行環境的情況下進行阻塞式使用,請啟用 blocking 功能並使用 reqwest::blocking::Client。curl2code 預設會生成搭配 tokio 的非同步程式碼。關於另一個非同步生態系統,請參閱 curl 轉 Go (goroutines)。

如何在 Rust reqwest 中設定逾時?

在客戶端上設定:Client::builder().timeout(Duration::from_secs(30)).connect_timeout(Duration::from_secs(10)).build()?。針對單次請求:client.get(url).timeout(Duration::from_secs(5))。這些對應到 curl 的 --max-time--connect-timeout 旗標。

如何在 reqwest 中使用代理伺服器?

在客戶端建構器上設定代理:Client::builder().proxy(Proxy::https("http://proxy:8080")?).build()?。支援 HTTP、HTTPS 和 SOCKS5 代理。reqwest 預設也支援 HTTP_PROXYHTTPS_PROXY 環境變數。curl2code 會將 -x 旗標轉換為代理設定。

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

使用 curl2code 將類似 curl -X POST -H "Content-Type: application/json" -d "{"key":"value"}" URL 的 curl POST 指令轉換為 Rust。生成的程式碼使用 client.post(url).json(&data).send().await?。curl2code 會自動偵測帶有 JSON 內容的 -d/--data 旗標,並在 reqwest 程式碼中設置適當的 Content-Type 標頭。

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

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

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

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

實用連結

curl 指南

將 curl 轉換為其他語言