Routing
El enrutamiento en Express permite definir cómo la aplicación responde a las solicitudes HTTP dirigidas a URLs específicas. Express ofrece un sistema flexible y sencillo para manejar rutas, incluyendo soporte para parámetros, rutas dinámicas y agrupación mediante routers.
Rutas básicas
Las rutas se definen utilizando los métodos correspondientes al tipo de solicitud HTTP (get, post, put, delete, etc.):
import express from 'express';
const app = express();
app.get('/saludo', (req, res) => {
res.send('¡Hola mundo!');
});
app.post('/usuarios', (req, res) => {
res.send('Usuario creado');
});
app.put('/usuarios/:id', (req, res) => {
res.send(`Usuario ${req.params.id} actualizado`);
});
app.delete('/usuarios/:id', (req, res) => {
res.send(`Usuario ${req.params.id} eliminado`);
});
Rutas con parámetros
Express permite capturar valores dinámicos en las rutas mediante :param:
app.get('/usuarios/:id', (req, res) => {
res.send(`Usuario con ID: ${req.params.id}`);
});
También se pueden definir múltiples parámetros:
app.get('/usuarios/:id/posts/:postId', (req, res) => {
res.send(`Usuario ${req.params.id}, Post ${req.params.postId}`);
});
Uso de routers y grupos de rutas
Para organizar mejor las rutas, Express permite usar routers, que funcionan como grupos de rutas independientes:
const usuarioRouter = express.Router();
usuarioRouter.get('/', (req, res) => res.send('Lista de usuarios'));
usuarioRouter.post('/', (req, res) => res.send('Crear usuario'));
app.use('/usuarios', usuarioRouter);
De esta manera, todas las rutas definidas en usuarioRouter estarán bajo el prefijo /usuarios.
Buenas prácticas y convenciones
- Mantener las rutas organizadas en módulos o archivos separados.
- Usar nombres descriptivos para rutas y parámetros.
- Evitar lógica compleja dentro de las funciones de ruta; delegar a controladores o servicios.
- Agrupar rutas relacionadas usando
express.Router()para mejorar la legibilidad y mantenibilidad. - Aplicar middleware específico por ruta o grupo cuando sea necesario (autenticación, logging, validación).