如何将中间件应用到 Go 中大猩猩工具包 http://www.gorillatoolkit.org/多路复用器子路由器?
我有以下代码:
router := mux.NewRouter().StrictSlash(true)
apiRouter := router.PathPrefix("/api/").Subrouter()
apiRouter.Methods(http.MethodGet).
Path("/api/path/to/handler").Handler(handleAPICall)
我想应用一个中间件处理程序来检查安全令牌,但仅限于那些以/api
.
以下似乎有效:
apiRouter := mux.NewRouter()
router.PathPrefix("/api/").Handler(http.StripPrefix("/api",
adapt(apiRouter, checkTokenHandler)))
apiRouter.Methods(http.MethodGet).
Path("/path/to/handler").Handler(handleAPICall)
// Note that `/api` has been removed from the path.
where
func adapt(h http.Handler, adapters ...func(http.Handler) http.Handler)
http.Handler {
for _, adapter := range adapters {
h = adapter(h)
}
return h
}
and
func checkTokenHandler(h http.Handler) http.Handler {
return http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) {
// Check the security cookie.
h.ServeHTTP(res, req)
})
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)