【发布时间】:2020-02-08 03:41:35
【问题描述】:
我有以下代码:
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)Using middleware with Golang Gorilla mux subrouters 但是上面问题的答案只能使用静态前缀,而我想知道与“/{bucket}”匹配的存储桶名称
(ii) This 是另一个使用新的 mux 对象解决相同问题的链接。这可能有效,但它看起来像大量的代码。我是 golang 新手,我正在更改更大代码库的一小部分,所以我不确定使用第一个 mux 对象对剩余代码的影响。
有没有办法在不使用 (ii) 中的解决方案的情况下做我需要的事情?
【问题讨论】:
-
使用Router.Use。
标签: go