2 回答
TA贡献1836条经验 获得超4个赞
要从 POST/PUT/PATCH 请求的正文获取多部分表单数据,可以使用解析多部分表单
方法来解析正文,然后通过 PostForm
字段访问数据。或者,您可以使用 FormValue
仅获取与表单字段关联的第一个值。
maxMemory := 32<<20
if err := r.ParseMultipartForm(maxMemory); err != nil {
panic(err)
}
fmt.Println(_getData{
Title: r.FormValue("title"), // FormValue returns string
Tag: r.PostForm["tag[]"], // PostForm is a map of []string
})
TA贡献1826条经验 获得超6个赞
您可以使用包 github.com/senpathi/paramex 将表单数据解析为 json,如带注释的结构。结构字段必须使用关键字进行注释,并且标记名称是表单数据的键。param
您的结构应如下所示。
type _getData struct {
Title string `param:"title"`
Tag []string `param:"tag[]"`
}
这是问题中提到的邮递员请求的更新的 MakeMap 处理程序函数
func MakeMap(w http.ResponseWriter, r *http.Request) {
// userInfo := context.Get(r, "userInfo").(model.User)
type _getData struct {
Title string `param:"title"`
Tag []string `param:"tag[]"`
}
// this needed because u send data from Postman as multipart/form-data
maxMemory := 32<<20
if err := r.ParseMultipartForm(int64(maxMemory)); err != nil {
panic(err)
}
var getData _getData
extractor := paramex.NewParamExtractor()
err := extractor.ExtractForms(&getData, r)
if err != nil {
panic(err.Error())
}
fmt.Print(getData)
//Output: {defaultMap [travelling travelling2]}
}
- 2 回答
- 0 关注
- 135 浏览
添加回答
举报