特定路由上的中间件

bat*_*zor 3 middleware http go go-chi

在 中go-chi,在单个路由级别设置中间件,而不仅仅是针对所有路由全局设置

// Routes creates a REST router
func Routes() chi.Router {
    r := chi.NewRouter()
    r.Use(middleware.Captcha)

    r.Post("/", Login)

    return r
}
Run Code Online (Sandbox Code Playgroud)

如何Login指定唯一的中间件或从通用中间件中排除?

Fli*_*mzy 6

你有两个选择。任何路由器都支持的自然方式:

r.Post("/", middlewareFunc(Login))
Run Code Online (Sandbox Code Playgroud)

或者,如果您想使用特定于 Chi 的方式,请为一个特定端点创建一个新组:

loginGroup := r.Group(nil)
loginGroup.Use(middleware)
loginGroup.Post("/", Login)
Run Code Online (Sandbox Code Playgroud)