处理器
处理器是Martini的灵魂和核心所在. 一个处理器基本上可以是任何的函数:
- m.Get("/", func() {
- println("hello world")
- })
返回值
当一个处理器返回结果的时候, Martini将会把返回值作为字符串写入到当前的http.ResponseWriter里面:
- m.Get("/", func() string {
- return "hello world" // HTTP 200 : "hello world"
- })
另外你也可以选择性的返回多一个状态码:
- m.Get("/", func() (int, string) {
- return 418, "i'm a teapot" // HTTP 418 : "i'm a teapot"
- })
服务的注入
处理器是通过反射来调用的. Martini 通过Dependency Injection__(依赖注入) 来为处理器注入参数列表. 这样使得Martini与Go语言的http.HandlerFunc
接口完全兼容.
如果你加入一个参数到你的处理器, Martini将会搜索它参数列表中的服务,并且通过类型判断来解决依赖关系:
- m.Get("/", func(res http.ResponseWriter, req *http.Request) { // res 和 req 是通过Martini注入的
- res.WriteHeader(200) // HTTP 200
- })
下面的这些服务已经被包含在核心Martini中: martini.Classic():
- *log.Logger - Martini的全局日志.
- martini.Context - http request context (请求上下文).
- martini.Params -
map[string]string
of named params found by route matching. (名字和参数键值对的参数列表) - martini.Routes - Route helper service. (路由协助处理)
- http.ResponseWriter - http Response writer interface. (响应结果的流接口)
- *http.Request - http Request. (http请求)