如何将中间件添加到Go中的子计算机?

如何将中间件添加到Go中的子计算机?,go,Go,我有以下代码: apiRouter := mux.NewRoute().PathPrefix("/").Subrouter() // Bucket router bucket := apiRouter.PathPrefix("/{bucket}").Subrouter() bucket.Methods("HEAD").Path("/{object:.+}").HandlerFunc( api.HeadObjectHandler) //

我有以下代码:

    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集合。这个stat集合框架将需要传递给bucket使用的所有处理程序的“bucket”名称

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

(一) 但是上面问题中的答案只能与静态前缀一起使用,而我想知道与“/{bucket}”匹配的bucket名称

(ii)是使用新的mux对象解决同一问题的另一个链接。这可能行得通,但它看起来像是对代码进行了大量的循环。我是golang的新手,我正在修改一个更大的代码库的一小部分,所以我不确定使用第一个mux对象对其余代码的影响


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

您只需添加以下内容:

bucket.use(middleware)
该中间件仅在该子计算机中使用

下面是一个完整的示例:

Use。