Skip to contentPedro Farbo
Lesson 4 / 2555 min

Routes and Middlewares

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/cors
typescript
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! 🚀

Enjoyed the content? Your contribution helps keep everything online and free!

PIX:0737160d-e98f-4a65-8392-5dba70e7ff3e