beego

beego注解路由404

月盾
beego注解路由匹配不到,返回404页面 router.go使用了两种方式注册路由: ns := beego.NewNamespace("/admin", beego.NSRouter("/", &controllers.UserController{}, "get:Welcome"), beego.NSInclude( &controllers.UserController{}, ), controller中的路由注解设置: // @router /admin/user/get-all-user [get] func (c *UserGroupController) GetAllUser() { user := new(User) users, err := user.GetUserList() if nil != err { c.Data["json"] = ErrorMsg(err) } c.Data["json"] = users c.ServeJSON() } 使用上面的方式注册路由后结果是nomatch 最终结果显示上面的注解路由时错误的,下面是正确的注册方式: 问题在于controller的注解写法,如果该路由在namespace下,则不能在注解中拼接命名空间前缀,框架会自动拼接。 即/admin为命名空间,注解中只需写/user/get-all-user,不能这样写/admin/user/get-all-user // @router /user/get-all-user [get] func (c *UserGroupController) GetAllUser() { user := new(User) users, err := user.GetUserList() if nil != err { c.Data["json"] = ErrorMsg(err) } c.

beego post请求获取request body参数

月盾
为了获取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.