rust ureq库,发送json格式的post请求

测试智商的网站 11小时前 阅读数 8119 #性能测试

在 Rust 中使用 ureq 库发送 JSON POST 请求非常简单。以下是一个完整的示例:

use serde_json::json;
use ureq;

fn main() -> Result<(), ureq::Error> {
    // 准备要发送的 JSON 数据
    let data = json!({
        "name": "John Doe",
        "age": 30,
        "email": "john@example.com"
    });

    // 发送 POST 请求
    let response = ureq::post("https://example.com/api/endpoint")
        .set("Content-Type", "application/json")  // 设置请求头
        .send_json(data)?;                        // 发送 JSON 数据

    // 处理响应
    let status = response.status();
    let body = response.into_string()?;
    
    println!("Status: {}", status);
    println!("Response: {}", body);
    
    Ok(())
}

关键点说明:

  1. 依赖:确保你的 Cargo.toml 中包含:

    [dependencies]
    ureq = "2.0"
    serde_json = "1.0"
    
  2. JSON 构建:使用 serde_json::json! 宏可以方便地构建 JSON 数据

  3. 请求头设置:必须设置 Content-Type: application/json

  4. 错误处理ureq 的方法返回 Result 类型,需要处理可能的错误

    rust ureq库,发送json格式的post请求

更简洁的写法(Rust 2021+)

use serde_json::json;
use ureq;

fn main() -> Result<(), ureq::Error> {
    let response = ureq::post("https://example.com/api/endpoint")
        .set("Content-Type", "application/json")
        .send_json(json!({
            "query": "Rust",
            "limit": 10
        }))?;
    
    println!("{}", response.into_string()?);
    Ok(())
}

注意事项

  • 对于复杂的 JSON 结构,可以先定义结构体并使用 serde 序列化
  • 考虑使用 ureq::Agent 来重用连接池以提高性能
  • 如果需要更高级的功能,可以考虑 reqwest
  • 随机文章
  • 热门文章
  • 热评文章
热门