Uso de Query Params y Path Params en el Routing de Express
Introducción
Cuando trabajamos con Express.js, uno de los frameworks más populares para construir aplicaciones backend en Node.js, el manejo eficiente de rutas es fundamental. Los Query Params y Path Params son dos formas clave de recibir y procesar datos desde el cliente al servidor a través de URLs. En este artículo, exploraremos qué son, cómo funcionan, sus diferencias, y cómo usarlos con ejemplos prácticos y casos de uso.
¿Qué son los Query Params y Path Params?
Query Params
- Son parámetros que se pasan en la URL después del símbolo
?
. - Se utilizan para enviar datos no estructurados, como filtros, búsquedas o configuraciones opcionales.
- Ejemplo:
https://miapp.com/productos?categoria=tecnologia&orden=asc
- Aquí, los parámetros son
categoria
yorden
.
Path Params
- Son parte del propio camino de la URL y suelen ser valores dinámicos que identifican recursos específicos.
- Ejemplo:
https://miapp.com/productos/123
- Aquí,
123
es un parámetro que identifica un producto.
Diferencias Entre Query Params y Path Params
Característica | Query Params | Path Params |
---|---|---|
Posición en la URL | Después del ? | Dentro del camino de la ruta |
Formato | clave=valor separados por & | Valores dinámicos en la URL |
Propósito | Datos opcionales (filtros, paginación) | Identificación de recursos específicos |
Uso Común | Filtros, configuraciones | Recursos como ID o nombres |
Cómo Utilizar Query Params y Path Params en Express
Configuración Básica del Proyecto
Primero, instala Express:
npm install express
Crea un archivo app.js
con la configuración básica:
const express = require('express');
const app = express();
const PORT = 3000;
app.listen(PORT, () => {
console.log(`Servidor ejecutándose en http://localhost:${PORT}`);
});
Uso de Query Params
Los Query Params se obtienen del objeto req.query
.
Ejemplo Práctico: Filtrar Productos por Categoría y Orden
app.get('/productos', (req, res) => {
const { categoria, orden } = req.query;
if (!categoria || !orden) {
return res.status(400).send('Faltan parámetros en la consulta');
}
res.send(`Filtrando productos de la categoría ${categoria} en orden ${orden}`);
});
Prueba en el Navegador o Postman:
http://localhost:3000/productos?categoria=tecnologia&orden=asc
Resultado:
Filtrando productos de la categoría tecnologia en orden asc
Caso de Uso: Paginación
app.get('/productos', (req, res) => {
const { pagina = 1, limite = 10 } = req.query;
res.send(`Mostrando página ${pagina} con un límite de ${limite} productos por página`);
});
Prueba:
http://localhost:3000/productos?pagina=2&limite=5
Uso de Path Params
Los Path Params se obtienen del objeto req.params
.
Ejemplo Práctico: Obtener un Producto por su ID
app.get('/productos/:id', (req, res) => {
const { id } = req.params;
res.send(`Producto solicitado con ID: ${id}`);
});
Prueba:
http://localhost:3000/productos/123
Resultado:
Producto solicitado con ID: 123
Caso de Uso: Operaciones CRUD
app.get('/usuarios/:id', (req, res) => {
const { id } = req.params;
res.send(`Obteniendo datos del usuario con ID: ${id}`);
});
app.delete('/usuarios/:id', (req, res) => {
const { id } = req.params;
res.send(`Usuario con ID ${id} eliminado exitosamente`);
});
Combinando Query Params y Path Params
Es común usar ambos para manejar recursos y configuraciones al mismo tiempo.
Ejemplo Práctico: Filtrar Productos por Categoría en una Tienda Específica
app.get('/tiendas/:tiendaId/productos', (req, res) => {
const { tiendaId } = req.params;
const { categoria, orden } = req.query;
res.send(`Productos de la tienda ${tiendaId}, categoría ${categoria}, ordenados ${orden}`);
});
Prueba:
http://localhost:3000/tiendas/5/productos?categoria=ropa&orden=desc
Resultado:
Productos de la tienda 5, categoría ropa, ordenados desc
Buenas Prácticas en el Uso de Query Params y Path Params
Valida los Parámetros:
Siempre verifica que los parámetros requeridos existan y sean válidos. Usa librerías como Joi o Express Validator.Usa Rutas Semánticas:
Diseña rutas claras y descriptivas.- Bueno:
/usuarios/:id/perfil
- Malo:
/u/p
- Bueno:
Documenta las Rutas:
Utiliza herramientas como Swagger para documentar los endpoints.
Conclusión
El manejo de Query Params y Path Params es esencial para construir aplicaciones web robustas y funcionales con Express.js. Mientras que los Path Params ayudan a identificar recursos específicos, los Query Params permiten personalizar las consultas. Comprender cuándo y cómo utilizarlos no solo mejora la experiencia del usuario, sino que también organiza y optimiza el desarrollo de tu backend.
Links de referencia: