JSON 解码器不适用于 http 请求正文

我开始疯狂地试图让 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.


任何帮助将不胜感激!


开满天机
浏览 183回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go