基于 beego 的 Controller 设计,只需要匿名组合 beego.Controller
就可以了,如下所示:
package your_package
import (
"github.com/beego/beego/v2/server/web"
)
type xxxController struct {
web.Controller
}
web.Controller
实现了接口 web.ControllerInterface
,web.ControllerInterface
定义了如下函数:
Init(ctx *context.Context, controllerName, actionName string, app interface{})
这个函数主要初始化了 Context、相应的 Controller 名称,模板名,初始化模板参数的容器 Data,app 即为当前执行的 Controller 的 reflecttype,这个 app 可以用来执行子类的方法。
Prepare()
这个函数主要是为了用户扩展用的,这个函数会在下面定义的这些 Method 方法之前执行,用户可以重写这个函数实现类似用户验证之类。
Get()
如果用户请求的 HTTP Method 是 GET,那么就执行该函数,默认是 405,用户继承的子 struct 中可以实现了该方法以处理 Get 请求。
Post()
如果用户请求的 HTTP Method 是 POST,那么就执行该函数,默认是 405,用户继承的子 struct 中可以实现了该方法以处理 Post 请求。
Delete()
如果用户请求的 HTTP Method 是 DELETE,那么就执行该函数,默认是 405,用户继承的子 struct 中可以实现了该方法以处理 Delete 请求。
Put()
如果用户请求的 HTTP Method 是 PUT,那么就执行该函数,默认是 405,用户继承的子 struct 中可以实现了该方法以处理 Put 请求.
Head()
如果用户请求的 HTTP Method 是 HEAD,那么就执行该函数,默认是 405,用户继承的子 struct 中可以实现了该方法以处理 Head 请求。
Patch()
如果用户请求的 HTTP Method 是 PATCH,那么就执行该函数,默认是 405,用户继承的子 struct 中可以实现了该方法以处理 Patch 请求.
Options()
如果用户请求的HTTP Method是OPTIONS,那么就执行该函数,默认是 405,用户继承的子 struct 中可以实现了该方法以处理 Options 请求。
Finish()
这个函数是在执行完相应的 HTTP Method 方法之后执行的,默认是空,用户可以在子 struct 中重写这个函数,执行例如数据库关闭,清理数据之类的工作。
Trace() error
如果用户请求的 HTTP Method 是 Trace,那么就执行该函数,默认是 405,用户继承的子 struct 中可以实现了该方法以处理 Head 请求。
Render() error
这个函数主要用来实现渲染模板,如果 beego.AutoRender 为 true 的情况下才会执行。
Mapping(method string, fn func())
注册一个方法。一般而言, method 是合法的 HTTP 方法名。当然,用户注册自己特定的业务逻辑方法,而后手动调用。
HandlerFunc(fnname string) bool
在前面 Mapping 方法里面注册的方法,可以通过该方法来使用。只会返回调用是否成功的信息——一般而言,只有方法不存在才会返回 false
RenderBytes() ([]byte, error)
将模板渲染成字节数组。需要注意的是,该方法并未检测EnableRender
设置。并且,和Render
方法相比,它并未将结果输出到Response
。
RenderString() (string, error)
类似于RenderBytes
方法。只是将结果转化为了string
。
Redirect(url string, code int)
重定向。url
是目的地址。
SetData(data interface{})
将data
存储在控制的数据中。一般而言,你不会考虑用到这个方法。
Abort(code string)
中断当前方法的执行,直接返回该状态码,类似于CustomAbort
。参考errors
CustomAbort(status int, body string)
中断方法执行,直接返回该状态码和信息。参考errors
StopRun()
直接触发panic
。
ServeXXX(encoding …bool) error
返回特性类型的响应。目前我们支持 JSON,JSONP,XML,YAML。参考输出格式
ServeFormatted(encoding …bool) error
返回响应。其格式由客户端的Accept
选项指定。参考输出格式
Input() (url.Values, error)
返回传入的参数。
ParseForm(ob