特定路线上的中间件

时间:2017-12-24 04:03:55

标签: http go middleware 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
}

如何Login指定一个独特的中间件或从一般中间件中排除?

1 个答案:

答案 0 :(得分:3)

您有两种选择。自然的方式,由任何路由器支持:

r.Post("/", middlewareFunc(Login))

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

loginGroup := r.Group(nil)
loginGroup.Use(middleware)
loginGroup.Post("/", Login)