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 關注
- 88 瀏覽
添加回答
舉報