Golang 在 http.Request 中跟踪请求 'body'

标签 go

<分区>

我的错误在这里得到了很好的解释: https://github.com/golang/go/issues/17088

不知道是不是对http包的概念理解有误,我在发送请求后没有返回请求的“body”(我的POST请求发送的参数)(client.Do)。 ..

示例:

func showRequestBody(r *http.Request) {
  fmt.Println(r)
  fmt.Println(r.Body)
}

给我一​​张空 map ,或者当我这样做时:r.Form 或 r.PostForm 为 nil 或为空。

谢谢 :)(更多信息和很棒的代码高亮在 github 链接上)

最佳答案

Body 不是字符串而是 Reader(更具体地说是 ReadCloser)。当你读取一些字节时,你从流中取出它,你不能再次读取它。

如果您确实需要在发送 Body 之前拦截它,并且无法再次从源读取,解决方案是在从缓冲区重建新的 ReadCloser 之前将其读入缓冲区。

编辑:此时我意识到这主要是 Reading body of http.Request without modifying request state? 的副本我投票决定关闭。如果没有任何结果,我可能会删除答案。

关于Golang 在 http.Request 中跟踪请求 'body',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39473493/

相关文章:

go - .(data_type) 方法究竟调用/做什么?

REST api 返回的 json 自动按升序排序

go - Golang gorm协会(属于)

go - 如何使用 TOML 装置在使用 Go Buffalo 框架的开发环境中为我的数据库播种?

go - 在 macOS 上使用 GDB 调试 Go 程序

http - 如何覆盖 GoLang 中的组合结构方法

string - 我的指数超出范围,我开始 panic ,我无法摆脱

Go-Gorm:设置对象时会自动填充外键吗?

go - 如何处理同一个 RabbitMQ 队列中的多个 protobuf 消息?

linux - 如何下载Go on pixelbook/chromebook/Linux(debian)