zlsrs 0.1.6

Rust 标准库扩展工具集,提供更便捷的使用方式
Documentation
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>> {
    // 创建 HTTP 客户端
    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(());
    }

    // 解析 JSON 响应
    let response: HttpBinResponse = response.json()?;
    let user_response = response.json;

    // 打印响应结果
    println!("创建用户成功!");
    println!("用户年龄: {}", user_response.age);
    println!("用户名: {}", user_response.name);

    Ok(())
}