如何对使用大猩猩mmux的所有路由应用相同的处理程序
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何对使用大猩猩mmux的所有路由应用相同的处理程序相关的知识,希望对你有一定的参考价值。
我正在使用有价值的rootHandler
处理产生的错误。我想知道如何在我的api可以服务的每个端点上使用此处理程序。
r := mux.NewRouter()
r.Handle("/api/auth", rootHandler(authUser)).Methods("POST")
r.HandleFunc("/api/endpoint1", function1).Methods("POST")
r.HandleFunc("/api/endpoint2", function2).Methods("POST")
s := &http.Server{
Handler: r,
Addr: "127.0.0.1:8080",
WriteTimeout: 15 * time.Second,
ReadTimeout: 15 * time.Second,
}
我必须使用rootHanlder(functionName)包装每个路由函数,还是有办法将其应用于每个路由?
答案
取决于rootHandler
的确切结构,您可能可以将其设置为中间件:
func GetRootHandlerMW(authUser SomeType) func(http.Handler) http.Handler {
return func(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
// Do what needs to be done?
next.ServeHTTP(w, r)
})
}
}
...
r.Use(GetRootHandlerMW(authUser))
以上是关于如何对使用大猩猩mmux的所有路由应用相同的处理程序的主要内容,如果未能解决你的问题,请参考以下文章