# Controller API

Controller 作为 Beego 的主要概念,它承担了很多的职责,可以分成:

# 请求生命周期回调

在讨论生命周期的时候,要澄清两个概念:

  • 整个 Beego 应用的生命周期
  • 单个请求被处理的生命周期

这里我们讨论的是第二个:单个请求被处理的生命周期。

Controller 自定义了几个钩子函数:

  • Prepare(): 它会在每一个请求执行之前调用一遍
  • Finish(): 它会在每一个请求执行之后调用一遍

# 中断执行

Controller 里面提供了两个方法:

  • (c *Controller) Abort(code string): 该方法会立刻返回用户响应。如果对应的code开发者已经注册了错误处理的逻辑,那么就会回调错误处理逻辑。如果没有则只会输出一个错误码。如何注册处理逻辑,请参考错误处理
  • (c *Controller) CustomAbort(status int, body string): 这个方法会同时输出statusbody给用户。其中status就是 HTTP 响应码。但是如果对应的 HTTP 响应码已经注册了错误处理逻辑,那么应该使用Abort方法因此CustomAbort会在响应码已经注册了错误处理逻辑的情况下发生panic

此外在Controller中还有一个方法StopRun。这个方法相比前面两个方法,较为危险,因为它并不是直接输出错误响应给用户,而是直接发生panic。那么如果用户的RecoverPanic选项为true,那么就会执行从recover之中恢复的逻辑。

RecoverPanic请参考web.Config中的说明。