Reqwest:Rust HTTP 客戶端函式庫
Reqwest 是一個高階 HTTP 客戶端函式庫,它簡化了 HTTP 請求的處理流程,並提供了許多常用功能:
- 支援非同步與阻塞式 API
- 處理多種請求主體類型:純文字、JSON、URL 編碼表單、多部分表單
- 可自訂的重導向策略
- HTTP 代理支援
- 預設使用 TLS 加密
- Cookie 管理
基本用法
發起 GET 請求
對於單一請求,可以使用 get 快捷方法:
注意:若計劃執行多個請求,建議建立一個
Client並重複使用,以充分利用連線池的優勢。
發起 POST 請求
使用 body() 方法可設定請求主體:
表單資料
傳送表單資料是常見需求,可使用任何可序列化為表單資料的類型:
JSON 資料
透過 json 方法可輕鬆傳送 JSON 資料(需啟用 json 功能):
回應處理
可以多種方式處理回應:
進階功能
重導向策略
預設情況下,客戶端會自動處理 HTTP 重導向,最多跟隨 10 次跳轉。可使用 ClientBuilder 自訂此行為:
Cookie 支援
可透過 ClientBuilder 啟用會話 Cookie 的自動儲存與傳送:
代理設定
系統代理預設啟用,會從環境變數中尋找 HTTP 或 HTTPS 代理設定:
HTTP_PROXY或http_proxy:HTTP 連線的代理HTTPS_PROXY或https_proxy:HTTPS 連線的代理ALL_PROXY或all_proxy:兩種連線的代理
亦可透過程式碼明確設定代理:
TLS 設定
客戶端預設使用 TLS 連線至 HTTPS 目標:
逾時設定
可為請求設定逾時時間:
可選功能
Reqwest 提供多種可選功能,可透過 Cargo 功能啟用或停用:
http2(預設啟用):支援 HTTP/2default-tls(預設啟用):提供 HTTPS 的 TLS 支援rustls-tls:使用 rustls 提供 TLS 功能blocking:提供阻塞式客戶端 APIjson:提供 JSON 序列化與反序列化功能multipart:提供多部分表單功能cookies:提供 cookie 會話支援gzip、brotli、deflate、zstd:支援多種回應主體解壓縮socks:提供 SOCKS5 代理支援
阻塞式 API
當不需要非同步操作時,可使用阻塞式 API(需啟用 blocking 功能):