如何对使用大猩猩mmux的所有路由应用相同的处理程序

问题描述 投票:0回答:1

我正在使用有价值的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)包装每个路由函数,还是有办法将其应用于每个路由?

go handler gorilla mux
1个回答
0
投票

取决于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))

© www.soinside.com 2019 - 2024. All rights reserved.