gpt4 book ai didi

Golang 无法从 request.GetBody() 获取正文

转载 作者:IT老高 更新时间:2023-10-28 13:07:25 25 4
gpt4 key购买 nike

我尝试通过 request.GetBody() 读取请求正文,因为我需要多次读取同一个请求正文,但我总是收到以下错误。我检查了 req.body 是否为空,但不是。我什至不能调用 req.GetBody()。我的 Go 版本是 1.8.1。

 func read(res http.ResponseWriter, req *http.Request) {

_, err := req.GetBody()
if err != nil {
res.Write([]byte(err.Error()))
return
}

}

错误:

http: panic serving [::1]:53174: runtime error: invalid memory address or nil pointer dereference

最佳答案

Request 上的 GetBody() 函数仅用于客户端请求(请参阅 GetBody 成员的文档:https://golang.org/pkg/net/http/#Request),但看起来你正在做一个服务器端处理程序。因此,您需要使用 req.Body 成员,它是一个 io.ReadCloser。要从 io.ReadCloser 读取,您可以使用 io/ioutil 包和 ReadAll() 函数:

b, err := ioutil.ReadAll(req.Body)
if err != nil {
panic(err)
}

fmt.Printf("%s", b)

关于 ReadAll() 函数的更多信息:https://golang.org/pkg/io/ioutil/#example_ReadAll

关于Golang 无法从 request.GetBody() 获取正文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46579429/

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