use serde::{Deserialize, Serialize};
use zlsrs::zhttp;
#[derive(Debug, Serialize, Deserialize)]
struct UserRequest {
name: String,
age: u32,
email: String,
}
#[derive(Debug, Serialize, Deserialize)]
struct HttpBinResponse {
args: serde_json::Value,
data: String,
files: serde_json::Value,
form: serde_json::Value,
headers: std::collections::HashMap<String, String>,
json: UserRequest,
origin: String,
url: String,
}
pub fn main() -> Result<(), Box<dyn std::error::Error>> {
let client = zhttp::new(zhttp::ClientConfig {
debug: true,
..Default::default()
});
let user = UserRequest {
name: "张三".to_string(),
age: 25,
email: "zhangsan@example.com".to_string(),
};
let response = client
.post("http://httpbin.org/post")
.header("Authorization", "Bearer token")
.json(&user)?
.send()?;
assert_eq!(response.status, 200);
if response.status != 200 {
println!("请求失败,状态码: {}", response.status);
return Ok(());
}
let response: HttpBinResponse = response.json()?;
let user_response = response.json;
println!("创建用户成功!");
println!("用户年龄: {}", user_response.age);
println!("用户名: {}", user_response.name);
Ok(())
}