我正在Go中为一个项目编写一个服务器,它涉及从客户端接收JSON数据并发回JSON响应。当我运行代码时,我所做的任何请求都能正常工作,但响应始终为空。这是我服务器的代码。
type AddPlayerData struct {
name string
}
func main() {
router := mux.NewRouter()
router.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
fmt.Println("[ SUCCESS ] Request from ", r.RemoteAddr)
decoder := json.NewDecoder(r.Body)
var data AddPlayerData
err := decoder.Decode(&data)
if err != nil {
panic(err)
}
defer r.Body.Close()
json.NewEncoder(w).Encode(data)
}).Methods("PUT");
log.Fatal(http.ListenAndServe(":8080", router))
}
我发送的请求是PUT请求格式如下:
{
"name": "test-player"
}
我收到了回复,但它总是空的。
答案 0 :(得分:1)
这里的问题是你的json编码。 AddPlayerData
struct应该导出它的字段,以便json decoder / encoder能够工作。
将您的结构修改为
type AddPlayerData struct {
Name string `json:"name"`
}