请求体在Go lang (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)}

我希望在请求体中获得名称: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, "%sn", req.Body)
}
func main() {
    http.HandleFunc("/test", test)
    http.ListenAndServe(":8080", nil)
}

谁能告诉我为什么我得到空白数据在请求。主体属性?非常感谢。

Reuqes Body应该为空,因为您已经读取了它的所有内容。但这不是问题所在。
从你的问题来看,似乎你的输入不是有效的JSON(你有"这与"不同)。Decode方法将返回错误,您应该检查。

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

相关内容

  • 没有找到相关文章

最新更新