http.HandlerFunc
en un cierre.A veces, al iniciar quieres pasar datos a un http.HandlerFunc
. Esto se puede hacer fácilmente mediante la creación de un
cierre de la http.HandlerFunc
:
func MiControlador(basededatos *sql.DB) http.Handler {
return http.HandlerFunc(func (rw http.ResponseWriter, r *http.Request) {
// ahora, aquí tienes acceso a *sql.DB
})
}
Es bastante frecuente que necesitemos almacenar y recuperar datos que son específicos a la petición HTTP actual. Utiliza gorila / contexto para asignar valores y recuperarlos más tarde. Contiene un mutex global sobre un mapa del objeto petición.
func MiControlador(w http.ResponseWriter, r *http.Request) {
valor: = context.Get(r, "miClave")
// devuelve ("bar", true)
valor, bien: = context.GetOk(r, "miClave")
// ...
}