新手刚刚接触beego,使用beegoadmin作为后台管理系统; 问题:在beegoadmin中新增Node节点,router.go中新增路由,页面层使用easyui发送请求调用,添加AddDocotor的Post请求可以收到但是无法保存表单内容,其他的请求不论用put,post,get还是delete,响应的结果都是404,还请各位前辈指教,谢谢。
解决办法:路由大小写和请求的url需要严格匹配
```go
路由部分:
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");
}
})
```
有疑问加站长微信联系(非本文作者)