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

Jon*_*ond 0 post request go 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 

}
Run Code Online (Sandbox Code Playgroud)

这是 POSTMAN 中的正文请求

正文请求的屏幕截图

{
   "name": "markus"


}
Run Code Online (Sandbox Code Playgroud)

我尝试更改正文请求以形成数据

post 请求中表单数据的屏幕截图

但仍然没有成功。

有没有人有办法解决吗?

谢谢

sse*_*lla 5

你所拥有的不是身体,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

}
Run Code Online (Sandbox Code Playgroud)

编辑

如果您需要解析表单值,您需要调用ParseForm()

func search(w http.ResponseWriter, r *http.Request) {

    err := r.ParseForm()
    if err != nil {
        // handle err
    }

    name := r.FormValue("name")

}
Run Code Online (Sandbox Code Playgroud)