go - 总是从 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)
}
解决方案
该asd
字段未导出。将其更改为Asd string `json:"asd"`
. 导出以大写字母开头的标识符(类型、函数、字段、方法、变量、常量等),不导出以小写字母开头的标识符。json 包仅适用于导出的字段,未导出的将被忽略。
推荐阅读
- java - 在 int + String 操作上使用“+”运算符时,Java 是否将 int 隐式转换为 String?
- postgresql - Postgres 通知:在表中的行创建/删除/更新上使用行 ID 通知
- performance - 如何检查 Linux (X86_64) 中的 IRQ 延迟以进行性能调整?
- reactjs - 如何从组件访问另一个功能
- python - 在 Jinaj2.Template.render() 中访问烧瓶方法
- node.js - 反应中的 axios 调用返回 index.html
- visual-studio-code - 当有人更新到我的扩展程序的新版本时,我如何显示消息?
- android - Android Jetpack Compose 文档
- eclipse - 带有 lambda 表达式的 NullPointerException - 使用循环
- flutter - 如何将flutter中收集的联系方式保存到本机通讯录