为了账号安全,请及时绑定邮箱和手机立即绑定

Go lang中的请求正文为空(邮递员)

Go lang中的请求正文为空(邮递员)

Go
慕沐林林 2021-11-15 20:35:39
我正在使用 Postman 在本地主机上发布 json 字符串。我在 Postman 中传递的 json 字符串是:{    “name”: "foo"} 但是,当我在测试函数中检索数据时,req.Body我得到如下信息:&{%!s(*io.LimitedReader=&{0xc0820142a0 0}) <nil> %!s(*bufio.Reader=<nil>) %!s(bool=false) %!s(bool=true) {%!s(int32=0) %!s(uint32=0)} %!s(bool=true) %!s(bool=false) %!s(bool=false)}我希望在请求正文中获得 name:foo 。我的 go lang 代码是:import (    "encoding/json"    "fmt"    "net/http")type Input struct {    Name string `json:"name"`}func test(rw http.ResponseWriter, req *http.Request) {    var t Input    json.NewDecoder(req.Body).Decode(&t)    fmt.Fprintf(rw, "%s\n", req.Body)}func main() {    http.HandleFunc("/test", test)    http.ListenAndServe(":8080", nil)}谁能告诉我为什么我在 req.Body 属性中得到空白数据?非常感谢。
查看完整描述

1 回答

?
料青山看我应如是

TA贡献1772条经验 获得超8个赞

Reuqes Body 应该是空的,因为您已经从中阅读了所有内容。但这不是问题。

从你的问题,它似乎你的输入是无效的JSON(你有“这是不同的“)。

该解码方法将返回错误,你应该检查。


if err := json.NewDecoder(req.Body).Decode(&t); err != nil {

  fmt.Println(err)

}


查看完整回答
反对 回复 2021-11-15
  • 1 回答
  • 0 关注
  • 161 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信