为了账号安全,请及时绑定邮箱和手机立即绑定

马提尼中处理程序的调用顺序是什么?

马提尼中处理程序的调用顺序是什么?

Go
郎朗坤 2021-12-06 19:37:46
关于 golang 马提尼我们可以使用 m.Use() 添加中间件。当然,“中间件处理程序按添加顺序调用”。此外,也可以通过路由器添加处理程序,如 r.Get("/", handler)。有时,我们还需要在路由器处理程序之后调用一个处理程序。那是在将某些内容写入 ResponseWriter 之前调用处理程序。那么,如何排列这些处理程序的呈现顺序?我无法得到解决方案是 martini 的文档。
查看完整描述

1 回答

?
慕桂英546537

TA贡献1848条经验 获得超10个赞

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


查看完整回答
反对 回复 2021-12-06
  • 1 回答
  • 0 关注
  • 139 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信