我正在try 将会话添加到用GO编写的现有http服务器.我的代码如下所示
type HttpServer struct {
getRoutes map[string]http.HandlerFunc // pattern => handler
postRoutes map[string]http.HandlerFunc
server http.Server
}
func (s *HttpServer) Run() {
address := "127.0.0.1:8080"
s.server = http.Server{
Addr: address,
Handler: s,
ReadTimeout: 10 * time.Second,
WriteTimeout: 10 * time.Second,
MaxHeaderBytes: 1 << 20,
}
log.Fatal(s.server.ListenAndServe())
}
func (s *HttpServer) ServeHTTP(writer http.ResponseWriter, r *http.Request) {
...
}
我想使用以下工具添加会话 https://pkg.go.dev/github.com/alexedwards/scs/v2#SessionManager.LoadAndSave个
链接中的示例代码为
mux := http.NewServeMux()
mux.HandleFunc("/put", putHandler)
mux.HandleFunc("/get", getHandler)
// Wrap your handlers with the LoadAndSave() middleware.
http.ListenAndServe(":4000", sessionManager.LoadAndSave(mux))
示例代码将mux传递给LoadAndSave,然后将新的处理程序传递给HTTP.ListenAndServe(port,newHandler).在我的例子中,处理程序来self 添加到*HttpServer struct 中的ServeHttp方法.示例中的处理程序来自多路复用器.
我是新来的.是否可以将ServeHTTP方法传递给LoadAndSave并使用从LoadAndSave返回的处理程序?如果不是,有没有办法将我的示例中使用的HTTP.Server struct 字段传递给HTTP.ListenAndServe(Port,Handler)?