Rutas con parámetros dinámicos en Express
En esta clase vamos a aprender cómo crear rutas con parámetros dinámicos usando Express, una de las características más potentes para construir APIs flexibles.
Hasta ahora hemos definido rutas estáticas como / o /health. Sin embargo, en una aplicación real, a menudo necesitamos que parte de la URL sea variable para identificar un recurso específico, como el ID de un usuario o el slug de un post.
¿Qué es un parámetro dinámico?
Un parámetro dinámico es un segmento de la URL que actúa como un marcador de posición. Express captura automáticamente el valor que el usuario ponga en esa posición y nos lo entrega listo para usar.
En Express, definimos estos parámetros usando los dos puntos (:) seguidos del nombre que queramos darle.
Definiendo una ruta dinámica
Vamos a crear una ruta donde el id sea variable:
import express from 'express'
const app = express()
app.get('/users/:id', (req, res) => {
// Accedemos al parámetro a través de req.params
const { id } = req.params
return res.json({
userId: id
})
})
app.listen(1234)
¿Qué está pasando aquí?
:id: Indica a Express que cualquier valor que venga después de/users/debe ser capturado bajo el nombreid.req.params: Es el objeto donde Express guarda todos los parámetros dinámicos de la ruta.
Accediendo a los valores
Si un usuario visita la URL /users/123, Express rellenará automáticamente req.params de esta forma:
{
"id": "123"
}
Importante: Todos los valores capturados en
req.paramsson siempre de tipo String. Si esperas un número, tendrás que convertirlo manualmente.
Múltiples parámetros dinámicos
Puedes usar tantos parámetros como necesites en una misma ruta:
app.get('/users/:userId/posts/:postId', (req, res) => {
const { userId, postId } = req.params
return res.json({
userId,
postId
})
})
Express se encarga de extraer cada uno según el nombre que le hayas asignado en la definición de la ruta.
Parámetros dinámicos vs. Query params
Es común confundirlos, pero tienen propósitos distintos:
- Parámetros dinámicos (
/users/123): Forman parte de la estructura de la URL. Se usan para identificar un recurso de forma única. - Query params (
/users?limit=10): Son opcionales y van después del signo?. Se usan para filtrar, ordenar o paginar resultados.
¿Qué problemas resuelve esto?
Gracias a los parámetros dinámicos:
- Evitamos crear rutas infinitas: No necesitamos una ruta para el usuario 1, otra para el 2, etc.
- Rutas semánticas: Nuestras URLs son más limpias y fáciles de entender.
- Sin parsing manual: Olvídate de usar
split('/')o expresiones regulares complejas sobre la URL, como hacíamos en Node.js nativo.
Los puntos clave de la clase
- ✅ Usamos el símbolo
:para marcar segmentos variables en la URL. - ✅ Los valores capturados están disponibles en el objeto
req.params. - ✅ Podemos combinar múltiples parámetros dinámicos en una sola ruta.
- ✅ Los parámetros dinámicos son esenciales para identificar recursos específicos en una API REST.
En la siguiente clase utilizaremos estos conocimientos para empezar a construir nuestra primera REST API completa.