请求体只能读一次的问题
HTTP 请求体是流,默认只能读一次。中间件如果先读 body 做签名或日志,后面的 binding 可能就读不到数据。
需要重复读取时,要把内容读出来后重新放回 Request.Body。但这只适合小请求体,大文件上传不能这么做。
body, _ := io.ReadAll(c.Request.Body)
c.Request.Body = io.NopCloser(bytes.NewBuffer(body))更好的做法是控制中间件职责:签名校验只读必要字段,大 body 场景避免全量日志。
版权申明
本文系作者 @blogger 原创发布在请求体只能读一次的问题。未经许可,禁止转载。
评论
-- 评论已关闭 --
全部评论