如何在go-chi中从中间件中排除特定路由

问题描述 投票:0回答:2

我一直在一个项目中使用 go-chi 并使用身份验证中间件来实现这样的路由

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

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

这适用于在此声明之后定义的所有路由,这些路由都可以。 但现在我需要添加一条用于 webhook 的路由。我不想将此中间件应用于该路线,因为它会失败。我怎样才能做到这一点?

go routes middleware api-design go-chi
2个回答
2
投票

您可以在

/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("/", ...)
})

0
投票

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

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)
})
© www.soinside.com 2019 - 2024. All rights reserved.