1、下面是一个自定义Abort方法,实现统一错误处理的例子
package controllers
import "github.com/astaxie/beego"
type BaseController struct {
beego.Controller
}
// 自定义Abort, 统一返回错误数据
func (c *BaseController) Abort(code int, message string) {
c.Data["json"] = map[string]interface{}{
"code": code,
"message": message,
}
c.ServeJSON()
c.StopRun()
}
2、使用controller基类,主动抛出错误
package controllers
type UserController struct {
// 自定义基类
BaseController
}
func (c *UserController) Get() {
// 获取参数
id, err := c.GetInt("id")
if err != nil {
// 抛出错误信息
c.Abort(400, "Invalid parameter: id")
}
// 查询用户信息
user, err := models.GetUserById(id)
if err != nil {
// 抛出错误信息
c.Abort(500, "Failed to get user")
}
c.Data["json"] = user
c.ServeJSON()
}
其他错误处理机制,请参考:beego 错误处理