Go Academy · Lección

Enrutamiento y parámetros de ruta

Registro de handlers y análisis de parámetros de URL

Lección 2 de 413 pasos

Enrutamiento y parámetros de ruta es una lección gratuita de Go Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Go Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Go Academy incluye 4 lecciones en total.

Limitaciones del mux estándar

El http.ServeMux predeterminado no admite parámetros de ruta (por ejemplo, /users/{id}) ni enrutamiento basado en métodos. Go 1.22 añadió compatibilidad mejorada con patrones.

Patrones mejorados en Go 1.22

A partir de Go 1.22, ServeMux admite prefijos de método y parámetros de ruta:

mux.HandleFunc("GET /users/{id}", func(w http.ResponseWriter, r *http.Request) {
    id := r.PathValue("id")
    fmt.Fprintln(w, "user:", id)
})

r.PathValue

r.PathValue("name") extrae un segmento con nombre del patrón de URL (Go 1.22 o posterior).

// Pattern: "GET /products/{category}/{id}"
category := r.PathValue("category")
id := r.PathValue("id")

Análisis manual de rutas

Para Go < 1.22 o reglas complejas, extraiga los segmentos de la ruta con strings.Split(r.URL.Path, "/"):

parts := strings.Split(strings.Trim(r.URL.Path, "/"), "/")
// /users/42 → ["users", "42"]

Enrutamiento por método

Use un switch sobre r.Method para implementar la lógica de cada método dentro de un único controlador:

switch r.Method {
case http.MethodGet:
    getHandler(w, r)
case http.MethodPost:
    createHandler(w, r)
default:
    w.WriteHeader(http.StatusMethodNotAllowed)
}

Enrutadores de terceros populares

Bibliotecas como gorilla/mux, chi y httprouter ofrecen un enrutamiento más completo: restricciones mediante expresiones regulares, grupos con nombre, cadenas de middleware y subenrutadores.

Enrutador chi

chi es un enrutador ligero e idiomático compatible con los controladores de net/http:

r := chi.NewRouter()
r.Get("/users/{id}", getUser)
http.ListenAndServe(":8080", r)

Parámetros de consulta

Lea los parámetros de consulta desde r.URL.Query(), que devuelve un mapa url.Values:

page := r.URL.Query().Get("page")
if page == "" { page = "1" }

Comodín y coincidencia global

En los patrones de Go 1.22, {name...} es un comodín que coincide con el resto de la ruta:

mux.HandleFunc("/static/{path...}", serveStatic)

Rutas anidadas

Agrupe las rutas relacionadas con un subenrutador o registrando controladores con un prefijo común. El r.Route de chi crea un subenrutador para un prefijo.

Redirección de la barra final

http.ServeMux redirige automáticamente /path/ a /path o viceversa. Para desactivarlo, elimine las barras finales en un middleware antes de que el mux reciba la solicitud.

Comprobación rápida

En Go 1.22 o posterior, ¿cómo se extrae el segmento {id} de un patrón de URL coincidente?

Resumen: enrutamiento y parámetros de ruta

Puntos clave:

  • Go 1.22: prefijo de método + parámetros de ruta {name} en ServeMux
  • r.PathValue("name") extrae segmentos con nombre
  • Switch de método para la lógica específica de cada método
  • Enrutadores de terceros (chi, gorilla/mux) para enrutamientos complejos
Gratis para empezar

Aprende Go con un tutor de IA — gratis

Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.

Cursos
51
Lecciones
203

Preguntas frecuentes

¿La lección «Enrutamiento y parámetros de ruta» es gratis?

Sí — el texto completo de «Enrutamiento y parámetros de ruta» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Go Academy, actualiza a CoddyKit PRO. El curso de Go Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Enrutamiento y parámetros de ruta»?

Registro de handlers y análisis de parámetros de URL Practicas Go Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Go Academy?

No se requiere experiencia previa. Go Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.

¿Cuánto tiempo toma la lección «Enrutamiento y parámetros de ruta»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Go Academy?

Sí. Cada lección de Go Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Creación de un servidor HTTP
  2. Enrutamiento y parámetros de ruta
  3. Patrón de middleware
  4. Apagado ordenado
← Volver a Go Academy