猿问

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)}


我希望在请求正文中获得 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 属性中得到空白数据?非常感谢。


慕沐林林
浏览 162回答 1
1回答

料青山看我应如是

Reuqes Body 应该是空的,因为您已经从中阅读了所有内容。但这不是问题。从你的问题,它似乎你的输入是无效的JSON(你有“这是不同的“)。该解码方法将返回错误,你应该检查。if err := json.NewDecoder(req.Body).Decode(&t); err != nil {&nbsp; fmt.Println(err)}
随时随地看视频慕课网APP

相关分类

Go
我要回答