我有以下代码:
apiRouter := mux.NewRoute().PathPrefix("/").Subrouter()
// Bucket router
bucket := apiRouter.PathPrefix("/{bucket}").Subrouter()
bucket.Methods("HEAD").Path("/{object:.+}").HandlerFunc(
api.HeadObjectHandler)
// Similarly handle many more methods
我试图在“bucket”子路由器处理的所有操作之上添加统计数据集合。此统计收集框架将需要“存储桶”名称,该名称将传递给存储桶使用的所有处理程序。
有没有办法在 Go 中为子路由器添加包装器?我发现了一些类似的问题:
(i) 将中间件与 Golang Gorilla mux 子路由器结合使用但上述问题的答案只能与静态前缀一起使用,而我想知道与“/{bucket}”匹配的存储桶名称
(ii) This是另一个链接,它使用新的多路复用器对象解决相同的问题。这可能可行,但看起来代码很绕口。我是 golang 新手,我正在更改较大代码库的一小部分,因此我不确定使用第一个 mux 对象对剩余代码的影响。
有没有办法在不使用(ii)中的解决方案的情况下完成我需要的事情?
你只需要添加这样的东西:
bucket.use(middleware)
中间件仅在此子路由器中使用。
这是一个完整的例子:https://gist.github.com/cep21/a3fc8e1462d19c46422c03b0466d5869
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)