Handlers (处理器)
Negroni 提供双向的中间件机制,这个特征很棒,都是得益于 negroni.Handler
这个接口。
- type Handler interface {
- ServeHTTP(rw http.ResponseWriter, r *http.Request, next http.HandlerFunc)
- }
在中间件没有写入 ResponseWriter 响应前,它会在中间件链上调用 next http.HandlerFunc
先执行, 以下代码就是优雅的使用方式:
- func MyMiddleware(rw http.ResponseWriter, r *http.Request, next http.HandlerFunc) {
- // do some stuff before
- next(rw, r)
- // do some stuff after
- }
你也可以用 Use
函数把这些 http.Handler
处理器引入到处理器链上来:
- n := negroni.New()
- n.Use(negroni.HandlerFunc(MyMiddleware))
你也可以使用 UseHandler
把 http.Handler
s 处理器引入。
- n := negroni.New()
- mux := http.NewServeMux()
- // map your routes
- n.UseHandler(mux)
- n.Run(":3000")