马提尼的处理程序叫做顺序是什么?

时间:2016-01-06 17:34:47

标签: go martini

关于golang martini

  • 我们可以使用m.Use()添加中间件。当然,"中间件处理程序按照它们被添加的顺序调用"。
  • 此外,还可以通过路由器添加处理程序,例如r.Get(" /",handler)。
  • 有时,我们还需要在路由器处理程序之后调用一个处理程序。这是在将某些内容写入ResponseWriter之前调用的处理程序。

那么,如何处理这些处理程序的呈现方式?我无法解决马丁尼的文件。

1 个答案:

答案 0 :(得分:1)

正如你所说,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()调用之前或之后在中间件中添加代码。