为了账号安全,请及时绑定邮箱和手机立即绑定

golang解析POST请求

golang解析POST请求

Go
绝地无双 2021-11-15 16:51:26
我有一个带有有效负载的 HTTP POST 请求indices=0%2C1%2C2这是我的 golang 后端代码err := r.ParseForm()if err != nil {    http.Error(w, err.Error(), http.StatusInternalServerError)    return}log.Println("r.PostForm", r.PostForm)log.Println("r.Form", r.Form)body, err := ioutil.ReadAll(r.Body)if err != nil {    http.Error(w, err.Error(), http.StatusInternalServerError)    return}log.Println("r.Body", string(body))values, err := url.ParseQuery(string(body))if err != nil {    http.Error(w, err.Error(), http.StatusInternalServerError)    return}log.Println("indices from body", values.Get("indices"))输出:r.PostForm map[]r.Form map[]r.Body indices=0%2C1%2C2indices from body 0,1,2为什么 POST 请求没有被 解析r.ParseForm(),而手动解析它却url.ParseQuery(string(body))给出了正确的结果?

2 回答

?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

问题不在于您的服务器代码,这很好,而只是您的客户端,无论它是什么,都缺少Content-TypePOST 表单的正确标头。只需将标题设置为

Content-Type: application/x-www-form-urlencoded

在你的客户端。


查看完整回答
反对 回复 2021-11-15
?
慕的地10843

TA贡献1785条经验 获得超8个赞

从您的 http.Request 使用 PostFormValue("params") 从您的参数中获取值


err := r.ParseForm() 

if err != nil{

       panic(err)

}


params := r.PostFormValue("params") // to get params value with key


查看完整回答
反对 回复 2021-11-15

添加回答

代码语言

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号