beego post请求获取request body参数

  • 分类:【Golang
  • 浏览【2825】
  • 评论【0】
  • 更新【2016-9-12 21:16:23】

为了获取json类型的参数煞费苦心,差点不再爱了。

前端请求代码:

$.ajax({
    url: "/user",
    type: "post",
    data: JSON.stringify({username:"张三",mobile:"13265478965"}),
    //这才是最重要的地方,必须用JSON.stringify序列化成字符串,
    //直接使用对象死活都接收不到,至于大小写并不影响,只要写对了就行
    dataType: "json"
}).done(function(res) {
    if(res.result){
        alert("成功")
    }
    
});

后端接收代码:

func (this *UserController) Post() {
    var ob User//这是一个model,struct类型
    body := this.Ctx.Input.RequestBody//这是获取到的json二进制数据
    json.Unmarshal(body, &ob)//解析二进制json,把结果放进ob中
    user := &User{Username: ob.UserName, Mobile: ob.Mobile}
    err := user.AddUser()//这是添加用户函数
    if nil != err {
        this.Data["json"] = map[string]interface{}{"result": false, "msg": err}
    } else {
        this.Data["json"] = map[string]interface{}{"result": true, "msg": "新增成功"}
    }
    this.ServeJSON()
}

this.Input()获取的是所有参数集合,类型:url.Values(map[string]string) ** 特别注意:** 如果数据类型不匹配也会造成空数据结果。 例如:前端参数是age: "23",model中age int,也会获取不到数据。

关键字词:go,beego