我不知道为什么在POSTMAN中发送值时总是收到一个空字符串
func main(){
rtr := mux.NewRouter()
rtr.HandleFunc("/search", search).Methods("POST")
}
func search(w http.ResponseWriter, r *http.Request) {
name := r.FormValue("name") //returns empty
}
这是POSTMAN中的正文请求
screenshot for the body request
{
"name": "markus"
}
我试图将正文请求更改为表格数据
Screenshot for form data in post request
但是它仍然没有用。
有人可以解决吗?
谢谢
答案 0 :(得分:1)
您所拥有的不是FormValue
,而是JSON
的正文。如果您的JSON对象只是一个字符串到字符串的简单映射,那么您可以执行以下操作:
func search(w http.ResponseWriter, r *http.Request) {
body, _ := ioutil.ReadAll(r.Body) // check for errors
keyVal := make(map[string]string)
json.Unmarshal(body, &keyVal) // check for errors
name := keyVal["name"]
// do whatever with name
}
修改
如果您需要解析表单值,则需要调用ParseForm()
func search(w http.ResponseWriter, r *http.Request) {
err := r.ParseForm()
if err != nil {
// handle err
}
name := r.FormValue("name")
}
答案 1 :(得分:0)
只想在这里分享其他信息。
如果在向服务器发送请求时遇到任何问题,请检查Postman标头中的“内容类型”。
Content-Type
设置为application/json
,以便在请求中发送原始JSON。Content-Type
设置为application/x-www-form-urlencoded
。还要在邮递员的“身体”部分中选择x-www-form-urlencoded