You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Hyper 1.4升级后无法用hyper::body::to_bytes读取请求体

Hyper 1.x 读取请求体并解析JSON的方法

实现步骤

1. 提取请求体并转为字节数组

Hyper 1.x 中,hyper::body::to_bytes的参数不再是整个Request,而是Body类型。需要先从请求中提取出Body再进行转换:

use hyper::{Body, Request};
use hyper::body::to_bytes;

async fn handle_request(req: Request<Body>) -> Result<(), Box<dyn std::error::Error>> {
    // 将请求体转换为字节数组
    let bytes = to_bytes(req.into_body()).await?;
    // 后续处理逻辑

2. 转换为字符串并解析JSON

这一步和你之前的逻辑一致,先将字节数组转为UTF-8字符串,再用JSON库解析:

use std::str;
    use serde_json::from_str;

    // 转换为字符串
    let body_str = str::from_utf8(&bytes)?;
    // 解析JSON
    let json_data = from_str(body_str)?;
    // 业务逻辑处理...

    Ok(())
}

关键注意事项

  • Hyper 1.x 基于异步设计,所有读取请求体的操作必须在async函数中通过.await执行
  • 若请求体体积较大,to_bytes会将全部数据加载到内存,此时建议使用流式处理:通过Body的data()方法逐块读取数据,避免内存占用过高

内容的提问来源于stack exchange,提问作者A Boston

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 15:34:51