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

举报
福州司马懿 发表于 2025/05/25 19:39:36 2025/05/25
【摘要】 在 Rust 中使用 ureq 库发送 JSON POST 请求非常简单。以下是一个完整的示例:use serde_json::json;use ureq;fn main() -> Result<(), ureq::Error> { // 准备要发送的 JSON 数据 let data = json!({ "name": "John Doe", "ag...

在 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 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
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。