关于 golang 马提尼
- 我们可以使用 m.Use() 添加中间件。当然,“中间件处理程序按添加顺序调用”。
- 此外,还可以通过路由器添加处理程序,如 r.Get("/", handler)。
- 有时,我们还需要在路由器处理程序之后调用处理程序。那是在将某些内容写入 ResponseWriter 之前调用处理程序。
那么,如何排列这些处理程序的呈现顺序呢?我无法得到解决方案是马提尼的文件。
正如您所说,Martini 和其他中间件按照它们定义的顺序被调用:首先是使用添加的中间件,然后是路由中间件,然后是路由处理程序。
这是 martini 文档中给出的中间件示例:
// log before and after a request
m.Use(func(c martini.Context, log *log.Logger){
log.Println("before a request")
c.Next()
log.Println("after a request")
})
据此,如果你有中间件 A 和 B 以及路由 R,那么调用链将是这样的:
func A() {
// Do things before B
func B() {
// Do things before R
func R() {
// Do things in R
} ()
// Do things after R
}()
// Do things after B
}
因此,根据您的需要,您需要在Next()
调用之前或之后在中间件中添加代码。