1 回答
TA贡献1808条经验 获得超4个赞
您可以将中间件和后续路由包装在它们自己的组中(强调我的):
// Group 在当前路由// 路径上添加了一个新的内联路由器,并为内联路由提供了一个新的中间件堆栈。
Group(fn func(r Router)) Router
r.Route("/api/v1", func(r chi.Router) {
r.Route("/case", func(r chi.Router) {
// generic case - for everyone
r.Get("/{uuid}", caseGetByUuid)
r.Put("/", casePut)
// all cases only available to admins
r.Group(func(r chi.Router) {
r.Use(ensureAdminUser)
r.Get("/", caseGetAll)
})
}
})
它也可以与带有r.Route.
当中间件仅应用于一个路由时,另一种选择是r.With允许您“内联”中间件:
r.Route("/api/v1", func(r chi.Router) {
r.Route("/case", func(r chi.Router) {
// generic case - for everyone
r.Get("/{uuid}", caseGetByUuid)
r.Put("/", casePut)
// all cases only available to admins
r.With(ensureAdminUser).Get("/", caseGetAll)
}
})
- 1 回答
- 0 关注
- 73 浏览
添加回答
举报