Rutas y Middlewares
Entiende cómo organizar rutas y cómo funcionan los middlewares.
¿Qué son los Middlewares?
Los middlewares son funciones que tienen acceso a req, res y next. Se ejecutan antes de la ruta final.
typescript
const logMiddleware = (req, res, next) => { console.log(`${req.method} ${req.path}`); next(); // Continúa al siguiente middleware/ruta}; app.use(logMiddleware);Orden de Middlewares
Request → Middleware 1 → Middleware 2 → Ruta → Response
Organización de Rutas
typescript
// src/routes/product.routes.tsimport { Router } from 'express'; const router = Router(); router.get('/', (req, res) => { res.json([]);}); router.get('/:id', (req, res) => { res.json({ id: req.params.id });}); router.post('/', (req, res) => { res.status(201).json(req.body);}); export default router;typescript
// src/routes/index.tsimport { Router } from 'express';import productRoutes from './product.routes';import userRoutes from './user.routes'; const router = Router(); router.use('/products', productRoutes);router.use('/users', userRoutes); export default router;typescript
// src/app.tsimport express from 'express';import routes from './routes'; const app = express();app.use(express.json());app.use('/api', routes); export { app };Middlewares Incorporados Útiles
typescript
// Parsear JSONapp.use(express.json()); // Parsear URL encodedapp.use(express.urlencoded({ extended: true })); // Archivos estáticosapp.use('/uploads', express.static('uploads'));Middleware Personalizado
typescript
// src/middlewares/auth.middleware.tsimport { Request, Response, NextFunction } from 'express'; export const authenticate = ( req: Request, res: Response, next: NextFunction) => { const token = req.headers.authorization?.split(' ')[1]; if (!token) { return res.status(401).json({ error: 'Token no proporcionado' }); } // Validar token... next();}; // Uso en rutasrouter.get('/profile', authenticate, (req, res) => { res.json({ user: 'data' });});Middleware CORS
bash
npm install corsnpm install -D @types/corstypescript
import cors from 'cors'; app.use(cors({ origin: ['http://localhost:3000'], methods: ['GET', 'POST', 'PUT', 'DELETE'],}));Resumen
- ✅ Middlewares interceptan requests
- ✅ Rutas organizadas en archivos
- ✅ Router.use() para agrupar
- ✅ Middlewares personalizados y de terceros
Próxima clase: Arquitectura MVC! 🚀