Gorilla mux middleware personalizado
Estoy usando gorilla mux para administrar el enrutamiento. Lo que me falta es integrar un middleware entre cada solicitud.
Por ejemplo
package main
import (
"fmt"
"github.com/gorilla/mux"
"log"
"net/http"
"strconv"
)
func HomeHandler(response http.ResponseWriter, request *http.Request) {
fmt.Fprintf(response, "Hello home")
}
func main() {
port := 3000
portstring := strconv.Itoa(port)
r := mux.NewRouter()
r.HandleFunc("/", HomeHandler)
http.Handle("/", r)
log.Print("Listening on port " + portstring + " ... ")
err := http.ListenAndServe(":"+portstring, nil)
if err != nil {
log.Fatal("ListenAndServe error: ", err)
}
}
Cada solicitud entrante debe pasar por el middleware. ¿Cómo puedo integrar aquí un midleware?
Actualizar
Lo usaré en combinación con gorila / sesiones, y dicen:
Nota importante: si no está usando gorilla / mux, debe envolver sus manejadores con contexto. ¡Limpie el manejador ya que de lo contrario perderá memoria! Una manera fácil de hacer esto es envolver el mux de nivel superior al llamar a http.ListenAndServe:
¿Cómo puedo prevenir este escenario?