- 概要
概要
自定义Controller 是一个直接或间接嵌入了 *revel.Controller
的struct。
典型用法:
- type AppController struct {
- *revel.Controller
- }
*revel.Controller
在你自定义的struct中必须是第一个嵌入的类型
revel.Controller
用于请求的上下文,包含了请求与响应数据,请到 the godoc 查看完整内容, 下面是一个定义 (以及辅助类型的定义):
- type Controller struct {
- Name string // 控制器名称, 比如: "Application"
- Type *ControllerType // 控制器类型描述
- MethodType *MethodType // 控制器方法描述
- AppController interface{} // 控制器实例
- Request *Request
- Response *Response
- Result Result
- Flash Flash // 用户 cookie, 在请求之后清空
- Session Session // Session, 保存在cookie中,签名。
- Params *Params // URL和表单中的参数(包扩 multipart).
- Args map[string]interface{} // 每个请求的暂存空间
- RenderArgs map[string]interface{} // 传递给模板的参数
- Validation *Validation // 数据验证帮助器
- }
- // 统一的请求参数包装
- // 包括:
- // - URL 查询字符串
- // - Form 表单字段
- // - File 文件上传
- type Params struct {
- url.Values
- Files map[string][]*multipart.FileHeader
- }
- type Request struct {
- *http.Request
- ContentType string
- }
- type Response struct {
- Status int
- ContentType string
- Headers http.Header
- Cookies []*http.Cookie
- Out http.ResponseWriter
- }
作为HTTP请求处理的一部分,Revel实例化一个控制器,设置所有revel.Controller
嵌入的属性, 因此, Revel 不在请求之间共享实例,对于每个请求的处理,控制器都是独立的。