Go语言 如何在围棋中排除中间件中的特定路由

uyto3xhc  于 2023-11-14  发布在  Go
关注(0)|答案(2)|浏览(113)

我在一个项目中使用了go-chi,并使用了一个auth中间件来处理这样的路由

r := chi.NewRouter()
r.Use(authService.AuthMiddleware)

r.Route("/platform", func(r chi.Router) {
    r.Get("/version", RequestPlatformVersion)
})

字符串
这适用于在此声明之后定义的所有路由,这些路由都很好。但现在我需要添加一个用于webhooks的路由。我不想将此中间件应用于该路由,因为它会失败。我该如何做到这一点?

9avjhtql

9avjhtql1#

您可以在/platform路由中设置中间件:

r.Route("/platform", func(r chi.Router) {
    r.Use(authService.AuthMiddleware)
    r.Get("/version", RequestPlatformVersion)
})

r.Route("/webhooks", func(r chi.Router) {
    r.Get("/", ...)
})

字符串

v8wbuo2f

v8wbuo2f2#

对于需要使用相同中间件的多个路由,组是另一种选择:

router := chi.NewRouter()

router.Get("/healthcheck", HandleHealthCheck)

router.Group(func(r chi.Router) {
    r.Use(authService.AuthMiddleware)
    r.Use(middleware.Recoverer)    

    r.Get("/route1", HandleRoute1)
    r.Get("/route2", HandleRoute2)
    r.Post("/route3", HandleRoute3)
})

字符串

相关问题