gpt4 book ai didi

go - 如何在 Go 中向子路由器添加中间件?

转载 作者:行者123 更新时间:2023-12-03 01:52:57 25 4
gpt4 key购买 nike

我有以下代码:

    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是另一个链接,它使用新的多路复用器对象解决相同的问题。这可能可行,但看起来代码很绕口。我是 golang 新手,我正在更改较大代码库的一小部分,因此我不确定使用第一个 mux 对象对剩余代码的影响。

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

最佳答案

您只需要添加如下内容:

bucket.use(middleware)

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

这是一个完整的示例:https://gist.github.com/cep21/a3fc8e1462d19c46422c03b0466d5869

关于go - 如何在 Go 中向子路由器添加中间件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50512029/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com