Gorilla Mux para Go: guía completa con ejemplos

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

¿Qué es Gorilla Mux y para qué sirve?

\n\n

Gorilla 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
    \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
\n\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
\n\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\n

Instalación

\n\n

La 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:

\n\n
go get -u github.com/gorilla/mux
\n\n

Este comando descargará la biblioteca y la agregará a tu archivo go.mod. Después de eso, puedes importarla en tu código:

\n\n
import "github.com/gorilla/mux"
\n\n

Si 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!

\n\n

Inicio rápido: un servidor HTTP simple con Gorilla Mux

\n\n

Vamos a crear un servidor web mínimo que maneje solicitudes GET en la ruta raíz y devuelva un saludo.

\n\n
package 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\n

Ejecuta 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!".

\n\n

Observa: pasamos nuestro enrutador r a http.ListenAndServe. Esto es posible porque mux.Router implementa la interfaz http.Handler.

\n\n

Métodos y funciones principales de Gorilla Mux

\n\n

Veamos los métodos clave de la biblioteca. Cada método irá acompañado de una descripción, parámetros y un ejemplo funcional.

\n\n

1. mux.NewRouter()

\n

Qué hace: Crea una nueva instancia del enrutador. Es el punto de partida para todas las rutas.

\n

Parámetros: Ninguno.

\n

Devuelve: Un puntero a mux.Router.

\n\n
r := mux.NewRouter()\n// Ahora r está listo para definir rutas
\n\n

2. r.HandleFunc(path, handler)

\n

Qué hace: Registra una función manejadora para la ruta dada. Es la forma principal de definir rutas.

\n

Parámetros: Ruta (string) y función manejadora (func(http.ResponseWriter, *http.Request)).

Recommendations