¿Qué es Gorilla Mux y para qué sirve?
\n\nGorilla Mux (a menudo llamado simplemente "mux" de "multiplexor") es un potente y popular enrutador HTTP (enrutador) para el lenguaje de programación Go. Forma parte del ecosistema Gorilla Web Toolkit, que proporciona muchos componentes útiles para el desarrollo web.
\n\n¿Para qué necesitas un enrutador separado si la biblioteca estándar de Go ya tiene net/http? El http.ServeMux estándar es excelente para proyectos simples, pero tiene varias limitaciones:
- \n
- No admite segmentos de ruta dinámicos (por ejemplo,
/users/{id}). \n - No admite métodos HTTP (GET, POST, PUT, DELETE); debes verificarlos manualmente. \n
- No admite expresiones regulares en las rutas. \n
- No tiene middleware integrado (software intermedio). \n
Gorilla Mux resuelve todos estos problemas. Te permite:
\n- \n
- Definir rutas complejas con partes variables. \n
- Restringir rutas por métodos HTTP, hosts, encabezados y parámetros de consulta. \n
- Usar subenrutadores (subrouters) para agrupar rutas. \n
- Integrarse fácilmente con middleware. \n
- Construir API RESTful con URL limpias y comprensibles. \n
La biblioteca Gorilla Mux es el estándar de facto para construir servidores HTTP en Go. Se utiliza en miles de proyectos, desde pequeños microservicios hasta grandes aplicaciones comerciales.
\n\nInstalación
\n\nLa instalación de Gorilla Mux en un proyecto Go se realiza a través del gestor de paquetes go get. Abre una terminal en la raíz de tu proyecto y ejecuta el comando:
go get -u github.com/gorilla/mux\n\nEste comando descargará la biblioteca y la agregará a tu archivo go.mod. Después de eso, puedes importarla en tu código:
import "github.com/gorilla/mux"\n\nSi usas Go Modules (que es el estándar para Go 1.16+), la biblioteca se agregará automáticamente a tus archivos go.mod y go.sum. ¡Todo listo para trabajar!
Inicio rápido: un servidor HTTP simple con Gorilla Mux
\n\nVamos a crear un servidor web mínimo que maneje solicitudes GET en la ruta raíz y devuelva un saludo.
\n\npackage main\n\nimport (\n "fmt"\n "log"\n "net/http"\n\n "github.com/gorilla/mux"\n)\n\nfunc main() {\n // Creamos un nuevo enrutador\n r := mux.NewRouter()\n\n // Definimos la ruta: GET /\n r.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {\n fmt.Fprintf(w, "¡Hola, mundo! ¡Esto es Gorilla Mux!")\n })\n\n // Iniciamos el servidor en el puerto 8080\n log.Println("Servidor iniciado en http://localhost:8080")\n log.Fatal(http.ListenAndServe(":8080", r))\n}\n\nEjecuta este código (go run main.go) y abre en tu navegador http://localhost:8080. Verás el mensaje "¡Hola, mundo! ¡Esto es Gorilla Mux!".
Observa: pasamos nuestro enrutador r a http.ListenAndServe. Esto es posible porque mux.Router implementa la interfaz http.Handler.
Métodos y funciones principales de Gorilla Mux
\n\nVeamos los métodos clave de la biblioteca. Cada método irá acompañado de una descripción, parámetros y un ejemplo funcional.
\n\n1. mux.NewRouter()
\nQué hace: Crea una nueva instancia del enrutador. Es el punto de partida para todas las rutas.
\nParámetros: Ninguno.
\nDevuelve: Un puntero a mux.Router.
r := mux.NewRouter()\n// Ahora r está listo para definir rutas\n\n2. r.HandleFunc(path, handler)
\nQué hace: Registra una función manejadora para la ruta dada. Es la forma principal de definir rutas.
\nParámetros: Ruta (string) y función manejadora (func(http.ResponseWriter, *http.Request)).