FormValue всегда пустая карта - PullRequest
0 голосов
/ 16 мая 2018

Я запрограммировал несколько методов для моего обработчика, которые выглядят так, например:

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

Проблема в том, что r.Form всегда пустая карта, в моем запросе на удаление я отправляю Id в формате JSON, который выглядит следующим образом:

    {
        "CustomerDate": "13.03.2018",
        "CustomerDateTime": "13:30",
        "UserId": 4
    }

в основном методе я регистрирую методы-обработчики следующим образом:

        router.HandleFunc("/delete",handler.DeleteProduct).Methods("DELETE")

Почему r.Form и r.PostForm всегда являются пустой картой?

1 Ответ

0 голосов
/ 16 мая 2018

В случае запроса 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...