我开始疯狂地试图让 Go 解码这个 json 请求正文。这是一个示例请求:
curl -X POST -d "{\"username\":\"foo\", \"password\":\"bar\"}" http://localhost:3000/users
这是我的处理程序:
mux.HandleFunc("/users", func(rw http.ResponseWriter, req *http.Request) {
var body struct {
username string
password string
}
// buf := make([]byte, req.ContentLength)
// req.Body.Read(buf)
// fmt.Println(string(buf))
//
// The above commented out code will correctly print:
// {"username":"foo", "password":"bar"}
err := json.NewDecoder(req.Body).Decode(&body)
if err != nil {
rw.WriteHeader(http.StatusNotAcceptable)
return
}
fmt.Printf("%+v\n", body)
// prints -> {username: password:}
})
就像评论所暗示的那样,我可以验证这req.Body确实是正确的——但无论出于何种原因,json.NewDecoder(req.Body).Decode(&body)永远不会填写body.
任何帮助将不胜感激!
相关分类