3-Rutas en Express

 Estructura del Proyecto

Antes de comenzar, revisemos la organización del proyecto:

Copy
Download
BIENESRAICES_MVC/
├── controllers/
├── node_modules/
├── public/
│   ├── css/
│   │   ├── app.css
│   │   └── tailwind.css
│   ├── img/
│   └── js/
├── routes/
├── views/
│   ├── auth/
│   │   ├── login.pug
│   │   └── registro.pug
│   └── layout/
│       └── index.pug
├── package.json
└── tailwind.config.cjs

Manejo de Rutas en Express: Organizando tu API con Router y app.use

En este post, aprenderemos cómo estructurar las rutas de manera modular en Express, utilizando Router y la diferencia clave entre app.get() y app.use().


1. ¿Por qué usar Router?

Cuando tu aplicación crece, manejar todas las rutas en un solo archivo (index.js) se vuelve complicado. Express.Router() permite:

  • Modularizar rutas (separarlas en archivos independientes).

  • Agrupar rutas bajo un prefijo común (ej: /api/users).

  • Mantener el código ordenado y escalable.


2. Creando un Archivo de Rutas (Ejemplo: userRoutes.js)

javascript
Copy
Download
import express from "express";

const router = express.Router(); // Creamos un enrutador

// Ruta GET en la raíz del router
router.get('/', (req, res) => {
  res.json({ msg: 'Hola Mundo en Express' });
});

// Otras rutas relacionadas con usuarios...
router.get('/profile', (req, res) => {
  res.json({ msg: 'Perfil de usuario' });
});

export default router; // Exportamos el router

Explicación:

  • express.Router() crea un objeto para manejar rutas.

  • router.get() define rutas específicas dentro de este módulo.

  • Al exportarlo, podemos usarlo en nuestro archivo principal (index.js).


3. Integrando las Rutas en index.js

javascript
Copy
Download
import express from 'express';
import usuarioRoutes from './routes/userRoutes.js'; // Importamos las rutas

const app = express();

// Configuramos las rutas
app.use('/', usuarioRoutes); // Todas las rutas de usuarioRoutes llevarán el prefijo "/"

// Alternativa con prefijo (ej: /api/users)
// app.use('/api/users', usuarioRoutes); // Ahora las rutas serían: /api/users/ y /api/users/profile

const port = 3000;
app.listen(port, () => {
  console.log(`Servidor en http://localhost:${port}`);
});

4. Diferencia Clave: app.get() vs app.use()

MétodoUsoEjemplo
app.get()Define una ruta exacta (solo responde a GET en esa URL).app.get('/about', (req, res) => { ... })
app.use()Monta un middleware o router en una ruta base (acepta todas las subrutas).app.use('/api', router)

¿Cuándo usar cada uno?

  • Usa app.get() para rutas simples y directas.

  • Usa app.use() para:

    • Agrupar rutas bajo un prefijo (ej: /api).

    • Integrar middlewares (ej: app.use(express.json())).

    • Montar routers modularizados (como usuarioRoutes).


5. Ejemplo con Prefijos de Ruta

Si queremos que todas las rutas de usuarios empiecen con /api/users:

javascript
Copy
Download
// En index.js
app.use('/api/users', usuarioRoutes);

// Ahora las rutas serían:
// GET /api/users/ → {"msg": "Hola Mundo en Express"}
// GET /api/users/profile → {"msg": "Perfil de usuario"}

6. Beneficios de esta Estructura

  • Organización: Cada conjunto de rutas vive en su propio archivo (ej: userRoutes.jsproductRoutes.js).

  • Escalabilidad: Puedes añadir más rutas sin saturar index.js.

  • Reusabilidad: Los routers pueden compartirse entre proyectos.


Conclusión

Usar Router y app.use() es la mejor práctica para manejar rutas en Express. Te permite:

  1. Separar lógica en módulos.

  2. Agrupar rutas bajo prefijos comunes.

  3. Mantener un código limpio incluso en aplicaciones grandes.

Próximos Pasos

  • Aprender sobre middlewares (ej: autenticación).

  • Implementar rutas dinámicas (/users/:id).

  • Conectar con una base de datos.

¿Te quedaron dudas? ¡Déjalas en los comentarios!

Comentarios

Entradas más populares de este blog

4- Template Engines

2-Iniciando un Servidor

1-Iniciar un Proyecto en Node.js