如何在Go中的子路由器中添加中间件?

时间:2018-05-24 14:35:08

标签: go

我有以下代码:

    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'处理的所有操作之上添加stat集合。 subrouter。此统计信息收集框架将需要“#”桶。传递给bucket使用的所有处理程序的名称。

有没有办法在Go中为子路由器添加包装?我发现了一些类似的问题:

(i)Using middleware with Golang Gorilla mux subrouters 但上述问题的答案只能用于静态前缀,而我想知道与" / {bucket}"

匹配的存储桶名称

(ii)This是使用新的mux对象解决相同问题的另一个链接。这可能有用,但看起来很像代码。我是golang的新手,而且我正在更改较大代码库的一小部分,所以我不确定使用第一个mux对象对剩余代码的影响。

有没有办法在不使用(ii)中的解决方案的情况下完成我需要的工作?

1 个答案:

答案 0 :(得分:0)

您只需要添加以下内容:

bucket.use(middleware)

仅在此子路由器中使用中间件。