【发布时间】:2018-04-07 11:11:03
【问题描述】:
在中间件中,我想读取请求正文以执行一些检查。然后,请求被传递到下一个中间件,在该中间件将再次读取正文。 这是我的工作:
bodyBytes, _ := ioutil.ReadAll(req.Body)
req.Body = ioutil.NopCloser(bytes.NewBuffer(bodyBytes))
// use bodyBytes
// pass to next middleware
现在,req.Body.Close 什么都不做。由于之前的 req.Body.Close 实现做了一些连接处理,它会中断吗?
【问题讨论】:
-
Golang read request body 的相关/可能重复。
-
我读过。在答案中,原始主体没有关闭,这令人困惑。
-
在服务器端你不需要关闭请求体。
Request.Body:“服务器将关闭请求体。ServeHTTP Handler 不需要。” -
不,原来的“关闭”并没有丢失。您只需为导出的
Request.Body字段分配一个新值。这不是唯一需要关闭的对原始正文阅读器的引用。 -
标题有误导性,应该是读取请求正文