python
runtime_error
ai_generated
true
运行时错误:请求被消费后,请求体不可用
RuntimeError: Request body is not available after the request has been consumed
ID: python/starlette-request-body-unavailable
80%修复率
86%置信度
0证据数
2024-09-30首次发现
版本兼容性
| 版本 | 状态 | 引入 | 弃用 | 备注 |
|---|---|---|---|---|
| 3.x | active | — | — | — |
根因分析
在 Starlette 中多次读取请求体,例如在中间件和端点中,但流只能读一次。
English
在 Starlette 中多次读取请求体,例如在中间件和端点中,但流只能读一次。
解决方案
-
85% 成功率
body = await request.body(); request._body = body 然后后续使用 request._body
-
95% 成功率
确保只调用一次 await request.json() 或 body()
无效尝试
常见但无效的做法:
-
100% 失败
流已被读取,第二次调用会报错。
-
80% 失败
会导致并发问题。