处理器

处理器是Martini的灵魂和核心所在. 一个处理器基本上可以是任何的函数:

  1. m.Get("/", func() {
  2. println("hello world")
  3. })

返回值

当一个处理器返回结果的时候, Martini将会把返回值作为字符串写入到当前的http.ResponseWriter里面:

  1. m.Get("/", func() string {
  2. return "hello world" // HTTP 200 : "hello world"
  3. })

另外你也可以选择性的返回多一个状态码:

  1. m.Get("/", func() (int, string) {
  2. return 418, "i'm a teapot" // HTTP 418 : "i'm a teapot"
  3. })

服务的注入

处理器是通过反射来调用的. Martini 通过Dependency Injection__(依赖注入) 来为处理器注入参数列表. 这样使得Martini与Go语言的http.HandlerFunc接口完全兼容.

如果你加入一个参数到你的处理器, Martini将会搜索它参数列表中的服务,并且通过类型判断来解决依赖关系:

  1. m.Get("/", func(res http.ResponseWriter, req *http.Request) { // res 和 req 是通过Martini注入的
  2. res.WriteHeader(200) // HTTP 200
  3. })

下面的这些服务已经被包含在核心Martini中: martini.Classic():