Handlers (处理器)

Negroni 提供双向的中间件机制,这个特征很棒,都是得益于 negroni.Handler 这个接口。

  1. type Handler interface {
  2. ServeHTTP(rw http.ResponseWriter, r *http.Request, next http.HandlerFunc)
  3. }

在中间件没有写入 ResponseWriter 响应前,它会在中间件链上调用 next http.HandlerFunc 先执行, 以下代码就是优雅的使用方式:

  1. func MyMiddleware(rw http.ResponseWriter, r *http.Request, next http.HandlerFunc) {
  2. // do some stuff before
  3. next(rw, r)
  4. // do some stuff after
  5. }

你也可以用 Use 函数把这些 http.Handler 处理器引入到处理器链上来:

  1. n := negroni.New()
  2. n.Use(negroni.HandlerFunc(MyMiddleware))

你也可以使用 UseHandlerhttp.Handlers 处理器引入。

  1. n := negroni.New()
  2.  
  3. mux := http.NewServeMux()
  4. // map your routes
  5.  
  6. n.UseHandler(mux)
  7.  
  8. n.Run(":3000")