马提尼酒中处理程序的所谓顺序是什么?

What is the called order of the handlers in martini?

关于golang martini

那么,这些处理程序的呈现顺序是怎样的呢?解决办法是martini的文档。

正如您所说,Martini 和其他中间件的调用顺序是它们定义的顺序:首先是使用 use 添加的中间件,然后是路由中间件,然后是路由处理程序。

这里是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() 调用之前或之后的中间件中添加代码。