3-Rutas en Express
Estructura del Proyecto
Antes de comenzar, revisemos la organización del proyecto:
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.cjsManejo 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)
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 routerExplicació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
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étodo | Uso | Ejemplo |
|---|---|---|
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:
// 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.js,productRoutes.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:
Separar lógica en módulos.
Agrupar rutas bajo prefijos comunes.
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
Publicar un comentario