Rust的reqwest
库支持多种数据格式,包括但不限于以下几种:
- JSON:通过设置
Content-Type
为application/json
,你可以发送和接收JSON格式的数据。 - 表单数据(Form Data):通过设置
Content-Type
为multipart/form-data
,你可以发送表单数据。 - 文本数据(Text):通过设置
Content-Type
为text/plain
,你可以发送纯文本数据。 - X-WWW-Form-urlencoded:这是另一种表单数据格式,通常用于提交HTML表单。
- 字节流(Bytes):你可以直接发送字节流作为请求体。
- 其他自定义格式:你可以通过设置自定义的
Content-Type
头来发送其他格式的数据。
以下是一些示例代码,展示了如何使用reqwest
发送不同格式的数据:
发送JSON数据
use reqwest::Error; #[tokio::main] async fn main() -> Result<(), Error> { let client = reqwest::Client::new(); let json = serde_json::json!({ "key": "value" }); let response = client.post("https://example.com/api") .json(&json) .send() .await?; println!("Response: {:?}", response); Ok(()) }
发送表单数据
use reqwest::Error; use std::collections::HashMap; #[tokio::main] async fn main() -> Result<(), Error> { let client = reqwest::Client::new(); let form_data = https://www.yisu.com/ask/HashMap::from(["key1", "value1"), ("key2", "value2"), ]); let response = client.post("https://example.com/api") .form(&form_data) .send() .await?; println!("Response: {:?}", response); Ok(()) }
发送纯文本数据
use reqwest::Error; #[tokio::main] async fn main() -> Result<(), Error> { let client = reqwest::Client::new(); let text = "This is a plain text request."; let response = client.post("https://example.com/api") .body(text) .send() .await?; println!("Response: {:?}", response); Ok(()) }
发送X-WWW-Form-urlencoded数据
use reqwest::Error; use url::form_urlencoded::serialize; #[tokio::main] async fn main() -> Result<(), Error> { let client = reqwest::Client::new(); let form_data = https://www.yisu.com/ask/serialize(&["key1", "value1"), ("key2", "value2"), ])?; let response = client.post("https://example.com/api") .header(reqwest::header::CONTENT_TYPE, "application/x-www-form-urlencoded") .body(form_data) .send() .await?; println!("Response: {:?}", response); Ok(()) }
发送字节流
use reqwest::Error; use std::io::Cursor; #[tokio::main] async fn main() -> Result<(), Error> { let client = reqwest::Client::new(); let bytes = b"This is a byte stream request."; let body = Cursor::new(bytes); let response = client.post("https://example.com/api") .body(body) .send() .await?; println!("Response: {:?}", response); Ok(()) }
请注意,这些示例代码使用了tokio
作为异步运行时,并且假设你已经添加了必要的依赖项到你的Cargo.toml
文件中。