gpt4 book ai didi

http - 如何在 Golang 中间件中读取两次请求体?

转载 作者:IT王子 更新时间:2023-10-29 01:16:31 28 4
gpt4 key购买 nike

在中间件中,我想读取请求正文以执行一些检查。然后,请求被传递到下一个中​​间件,在那里将再次读取主体。这是我的做法:

bodyBytes, _ := ioutil.ReadAll(req.Body)
req.Body = ioutil.NopCloser(bytes.NewBuffer(bodyBytes))
// use bodyBytes
// pass to next middleware

现在,req.Body.Close 什么都不做。它会因为之前的 req.Body.Close 实现做了一些连接处理而中断吗?

最佳答案

Will it break since the previous req.Body.Close implementation did some connection handling?

没有。

但是您的代码有问题:阅读完所有内容后,您应该关闭 req.Body。然后你像你做的那样构造一个新的 ReadCloser 并将它交给下一个中间件(它本身或更下面的东西负责关闭是。)

bodyBytes, _ := ioutil.ReadAll(req.Body)
req.Body.Close() // must close
req.Body = ioutil.NopCloser(bytes.NewBuffer(bodyBytes))

关于http - 如何在 Golang 中间件中读取两次请求体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46948050/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com