会话上下文
每当调度器收到客户端的HTTP请求,都会创建一个对应的会话,会话中的信息称为上下文(Context)。
上下文是一个httpdispatcher.Context类型的结构体,封装了以下属性及方法:
*http.Request和http.ResponseWriter
- Request
- ResponseWriter
获取客户端请求数据的方法:
- RouteValue(string) ReqValue
- 获取路由参数,入参是路由参数名,出参可以链接写法转成指定的类型
- QueryValue(string) ReqValue
- 获取GET参数,入参是路由参数名,出参可以链接写法转成指定的类型
- FormValue(string) *ReqValue
- 获取POST/PUT参数,入参是路由参数名,出参可以链接写法转成指定的类型
- RealIP() string
- 获取客户端的真实IP地址
同会话中多个处理器之间传参的方法:
一个会话中可能会执行多个处理器函数,在同会话的多个处理器之间传递参数可以使用以下方法:
- SetContextValue(string, interface{})
- 在当前会话的上下文中存入参数,入参1是参数名,入参2是参数值
- ContextValue(string) interface{}
- 从当前会话的上下文中取出参数值,入参是参数名,出参需自行断言
同会话中的处理器逻辑控制的方法:
- Next(bool)
- 执行本方法并且入参值为
True
,调度器才会继续执行同会话中的后续处理器函数
客户端响应的方法:
- Redirect(int, string)
- 客户端重定向,入参1是状态码,只能是301或302;入参2是要重定向的URL地址
精准记录处理器中事件触发的代码行号的方法:
- Event(error)
- 使用本方法封装可能触发500事件的代码,能更加精准的记录下触发500事件的源码文件及行号