Routes and Middlewares
Understand how to organize routes and how middlewares work.
What are Middlewares?
Middlewares are functions that have access to req, res and next. They execute before the final route.
typescript
const logMiddleware = (req, res, next) => { console.log(`${req.method} ${req.path}`); next(); // Continues to next middleware/route}; app.use(logMiddleware);Middleware Order
Request → Middleware 1 → Middleware 2 → Route → Response
Route Organization
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 };Useful Built-in Middlewares
typescript
// Parse JSONapp.use(express.json()); // Parse URL encodedapp.use(express.urlencoded({ extended: true })); // Static filesapp.use('/uploads', express.static('uploads'));Custom Middleware
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 not provided' }); } // Validate token... next();}; // Usage on routesrouter.get('/profile', authenticate, (req, res) => { res.json({ user: 'data' });});CORS Middleware
bash
npm install corsnpm install -D @types/corstypescript
import cors from 'cors'; app.use(cors({ origin: ['http://localhost:3000'], methods: ['GET', 'POST', 'PUT', 'DELETE'],}));Summary
- ✅ Middlewares intercept requests
- ✅ Routes organized in files
- ✅ Router.use() for grouping
- ✅ Custom and third-party middlewares
Next lesson: MVC Architecture! 🚀