beego中发送的请求和路由无法匹配

lhlt138 · 2015-07-12 08:55:52 · 4674 次点击 · 大约8小时之前 开始浏览    置顶
这是一个创建于 2015-07-12 08:55:52 的主题,其中的信息可能已经有所发展或是发生改变。

新手刚刚接触beego,使用beegoadmin作为后台管理系统; 问题:在beegoadmin中新增Node节点,router.go中新增路由,页面层使用easyui发送请求调用,添加AddDocotor的Post请求可以收到但是无法保存表单内容,其他的请求不论用put,post,get还是delete,响应的结果都是404,还请各位前辈指教,谢谢。

解决办法:路由大小写和请求的url需要严格匹配

路由部分:

 beego.Router("/rbac/doctor/AddDoctor", &controllers.DoctorsController{}, "*:Post")
 beego.Router("/rbac/Doctor/UpdateDoctor", &controllers.DoctorsController{}, "*:UpdateDoctor")
 beego.Router("/rbac/Doctor/DelDoctor", &controllers.DoctorsController{}, "*:DelDoctor")
 beego.Router("/rbac/Doctor/AddAndEdit", &controllers.DoctorsController{}, "*:AddAndEdit")
对应的controller中代码如下:

// @Title Post
// @Description create Doctors
// @Param   body        body    models.Doctors  true        "body for Doctors content"
// @Success 200 {int} models.Doctors.Id
// @Failure 403 body is empty
// @router / [post]
func (c *DoctorsController) Post() {
    var v models.Doctors
    json.Unmarshal(c.Ctx.Input.RequestBody, &v)
    value := &v
    fmt.Println(value)
    if id, err := models.AddDoctors(&v); err == nil {
        c.Data["json"] = map[string]string{"id": id}
    } else {
        c.Data["json"] = err.Error()
    }
    c.ServeJson()
}

// beego admin update
func (c *DoctorsController) UpdateDoctor() {
    fmt.Println("--------------UpdateDoctor--------------");
    d := models.Doctors{}
    if err := c.ParseForm(&d); err != nil {
        //handle error
        c.Rsp(false, err.Error())
        return
    }
    id, err := models.UpdateDoctor(&d)
    if err == nil && id > 0 {
        c.Rsp(true, "Success")
        return
    } else {
        c.Rsp(false, err.Error())
        return
    }
}
// beego admin delete
func (c *DoctorsController) DelDoctor() {
    idStr := c.Ctx.Input.Params[":id"]
    fmt.Println(idStr);
    if err := models.DeleteDoctors(idStr); err == nil {
        c.Data["json"] = "OK"
    } else {
        c.Data["json"] = err.Error()
    }
    c.ServeJson()
}

func (this *DoctorsController) AddAndEdit() {
    d := models.Doctors{}
    if err := this.ParseForm(&d); err != nil {
        this.Rsp(false, err.Error())
        return
    }
    var err error
    var  id int64
    idStr := this.Ctx.Input.Params[":id"]
    if idStr != "" {
        id, err = models.UpdateDoctor(&d)
    } else {
        idStr, err = models.AddDoctors(&d)
    }

    if err == nil && id > 0  {
        this.Rsp(true, "Success")
        return
    } else {
        this.Rsp(false, err.Error())
        return
    }

}

页面请求调用代码如下:

     //删除请求
       vac.ajax('/doctor/'+row.Id, {Id:row.Id}, 'Delete', function(r){
                if(r.status){
                    $("#datagrid").datagrid('reload');
                }else{
                    vac.alert(r.info);
                }
            })
//添加请求
 $("#form1").form('submit',{
                    url:URL+'/AddDoctor',
                    onSubmit:function(){
                        return $("#form1").form('validate');
                    },
                    success:function(r){
                        var r = $.parseJSON( r );
                        console.log(r);
                        if(r.status){
                            $("#dialog").dialog("close");
                            $("#datagrid").datagrid('reload');
                        }else{
                            vac.alert(r.info);
                        }
                    }
//修改请求
          vac.ajax(URL+'/AddAndEdit', changes, 'POST', function(r){
                if(!r.status){
                    vac.alert(r.info);
                }else{
                    $("#datagrid").datagrid("reload");
                }
            })

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

4674 次点击  ∙  1 赞  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传