【rust】9、reqwest 调用 http

文章目录


reqwest 实现的 http server 和 client

用 https://github.com/seanmonstar/reqwest

cargo add reqwest -F json
cargo add tokio -F full

一、client

1.1 post

async fn http_post<T: Serialize>(addr: String, body: T) -> Result<(), reqwest::Error> {
    let client = reqwest::Client::new();
    let resp = client.post(addr.clone()).json(&body).send().await?;
    if resp.status() == StatusCode::OK || resp.status() == StatusCode::NO_CONTENT {
        println!(
            "http调用 {:?} 成功, 返回码 {:?}",
            addr.clone(),
            resp.status()
        );
    } else {
        let body_json = serde_json::to_string(&body).unwrap_or_else(|_| "".to_string());
        println!(
            "http调用 {:?} 成功, 返回码 {:?}, body: {}, 返回体 {:?}",
            addr.clone(),
            resp.status(),
            body_json,
            resp.text().await?
        );
    }
    Ok(())
}

调用方式如下:

async fn f(arg: Arg) -> Result<(), reqwest::Error> {
    #[derive(Debug, Serialize)]
    struct Body {
        #[serde(rename = "UserID")]
        user_id: i64,
        #[serde(rename = "Arr")]
        arr: Vec<String>,
    }

    let addr = format!("http://{}:123/v1/user", arg.server_ip);

    let req_body = Body {
        user_id: 1,
        arr: vec![
            "a".to_string(),
            "b".to_string(),
        ],
    };
    http_post(addr.clone(), req_body).await?;
    Ok(())
}
  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

呆呆的猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值