我一直在一个项目中使用 go-chi 并使用身份验证中间件来实现这样的路由
r := chi.NewRouter()
r.Use(authService.AuthMiddleware)
r.Route("/platform", func(r chi.Router) {
r.Get("/version", RequestPlatformVersion)
})
这适用于在此声明之后定义的所有路由,这些路由都可以。 但现在我需要添加一条用于 webhook 的路由。我不想将此中间件应用于该路线,因为它会失败。我怎样才能做到这一点?
您可以在
/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("/", ...)
})
对于需要使用相同中间件的多个路由,组是另一种选择:
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)
})