FormValue始终是空地图

时间:2018-05-16 12:40:00

标签: sql rest go

我为我的处理程序编写了多个方法,例如:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

问题是r.Form总是一张空地图,在我的删除请求中,我用JSON发送Id,如下所示:

RewriteEngine On 
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

在main方法中我注册了这样的处理程序方法:

func DeleteProduct(w http.ResponseWriter, r *http.Request){
    log.Println(r.Form)
    db.Exec("Delete from  products where Id = "+r.FormValue("Id"))
}

为什么r.Form和r.PostForm总是一张空地图?

1 个答案:

答案 0 :(得分:3)

如果是JSON请求,您必须在使用前unmarshal请求正文 任何参数。
例如:

type ReqBody struct {
  CustomerDateTime string `json:"CustomerDateTime"`
  CustomerDateTime string `json:"CustomerDateTime"`
  UserId           int    `json:"UserId"`
}

body, err := ioutil.ReadAll(req.Body)
if err != nil {
    // Error handler...
}
rb := ReqBody{}
json.Unmarshal(body, &rb)
// Now you can perform something like this:
println(rb.UserId)