首页 > 解决方案 > 总是从 POST req 得到空的身体

问题描述

我正在设置 HTTP 服务器,并希望/test路由接受 POST 请求,但此代码正文始终为空。这是我的请求正文:

{
    "asd": "123"
}

这是我的代码:

func main() {
    router := mux.NewRouter()
    router.HandleFunc("/test", handleData).Methods("POST")
    log.Fatal(http.ListenAndServe(":80", router))
}

type test1 struct {
    asd string
}

func handleData(w http.ResponseWriter, r *http.Request) {
    w.Header().Set("Content-Type", "application/json")
    var test test1
    _ = json.NewDecoder(r.Body).Decode(&test)
    json.NewEncoder(w).Encode(test)
}

标签: go

解决方案


asd字段未导出。将其更改为Asd string `json:"asd"`. 导出以大写字母开头的标识符(类型、函数、字段、方法、变量、常量等),不导出以小写字母开头的标识符。json 包仅适用于导出的字段,未导出的将被忽略。


推荐阅读