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

正在学习用 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() 继续运行代码

已邀请:

dragonbuf

赞同来自:

之前是这么玩的

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

astaxie - 创造、获取、分享、传播和应用Go

赞同来自:

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

bfcaicai - 向往niubility...

赞同来自:

goto 呢?

要回复问题请先登录注册