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

为什么FastAPI添加打印HTTP请求体的middleware后会挂起无响应

FastAPI中间件读取请求体后无响应问题解决

问题原因

FastAPI 的 Request 对象请求体是流式读取的,在中间件中调用 await request.body() 会一次性消费完请求体流,后续路由层解析请求参数时无法再次读取到数据,会一直处于等待状态,最终导致客户端无响应返回。

修复方案

读完请求体后,手动将请求体重新写入 Request 对象的接收方法,让后续流程可以正常读取请求数据。

修改后的中间件代码

@app.middleware('http')
async def debug_request(request: Request, call_next):
    _body = await request.body()
    print(_body)
    # 将已读取的请求体重新塞回 request,供后续链路使用
    async def receive_override():
        return {"type": "http.request", "body": _body, "more_body": False}
    request._receive = receive_override
    response = await call_next(request)
    return response

验证

修改完成后重启服务端,客户端可正常收到 {"detail": "ok"} 响应,同时中间件也能正常打印请求体内容。

内容的提问来源于stack exchange,提问作者Hobin C.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 18:36:05