使用POSTMAN访问FormValue Golang中的POST请求值

时间:2018-12-05 04:07:39

标签: go post request postman

我不知道为什么在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

但是它仍然没有用。

有人可以解决吗?

谢谢

2 个答案:

答案 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