Beego Beego: 怎么在 c.ServeJSON() 后马上停止

maplerichie · 2019年01月02日 · 最后由 bfcaicai 回复于 2019年01月07日 · 649 次阅读

正在学习用 Beego 开发一个API,还真的遇到蛮多问题的,最让我烦的是 c.ServeJSON()  返回 JSON 后还会继续下一行

type ResponseController struct {
    beego.Controller
}

func (c *ResponseController) Success(message string, httpCode int, data interface{}) {
    c.Ctx.Output.SetStatus(httpCode)
    c.Data["json"] = Response{IsSuccess: true, Message: message, Data: data}

    c.ServeJSON(ENCODING)
}

例子都是让每个API都有自己的 c.ServeJSON(), 可是我想简化代码,于是先了一个共用的 ResponseController , 结果发现 c.ServeJSON() 后不会停止运行下一行代码,有试过 c.Finish() 和 c.StopRun() 都不是理想的效果, 也有人说用 return, 可是如果在 Success() 这个加 return ,只会回去呼叫 Success() 的 func() 继续运行代码

更多原创文章干货分享,请关注公众号
  • 加微信实战群请加微信(注明:实战群):gocnio

之前是这么玩的

func (c *BaseController) Success(message string, data interface{}) {
    c.Data["json"] = map[string]interface{}{"success": 1, "message": message, "data": data}
    c.ServeJSON()
    c.StopRun()
}

StopRun 是目前比较常用的做法,为什么不理想?

goto 呢?

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册