Las rutas en Express especifican cómo la aplicación responde a solicitudes en diferentes URL y métodos HTTP.
Ejemplo básico:
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send('Página de inicio');
});
app.post('/submit', (req, res) => {
res.send('Formulario enviado');
});
app.listen(3000, () => {
console.log('Servidor ejecutándose en http://localhost:3000');
});
Parámetros de ruta
Los parámetros de ruta permiten capturar valores dinámicos en la URL usando :.
app.get('/user/:id', (req, res) => {
const userId = req.params.id;
res.send(`Usuario ID: ${userId}`);
}); Ejemplo con múltiples parámetros:
app.get('/user/:id/post/:postId', (req, res) => {
const { id, postId } = req.params;
res.send(`Usuario ID: ${id}, Post ID: ${postId}`);
}); Express soporta rutas dinámicas y permite crear rutas anidadas organizadas:
const express = require('express');
const router = express.Router();
// Ruta principal
router.get('/', (req, res) => {
res.send('Página de usuarios');
});
// Ruta dinámica
router.get('/:id', (req, res) => {
res.send(`Perfil del usuario con ID: ${req.params.id}`);
});
// Ruta anidada
router.get('/:id/posts', (req, res) => {
res.send(`Posts del usuario con ID: ${req.params.id}`);
});
module.exports = router; En el archivo principal app.js:
const userRoutes = require('./routes/users');
app.use('/users', userRoutes);
Métodos HTTP en rutas
Express permite manejar diferentes métodos HTTP:
const express = require('express');
const app = express();
app.route('/item')
.get((req, res) => {
res.send('Obtener un ítem');
})
.post((req, res) => {
res.send('Crear un ítem');
})
.put((req, res) => {
res.send('Actualizar un ítem');
})
.delete((req, res) => {
res.send('Eliminar un ítem');
});
app.listen(3000, () => {
console.log('Servidor ejecutándose en http://localhost:3000');
}); Separar la lógica de las rutas en controladores mejora la organización del proyecto.
Ejemplo: Definir un controlador
Archivo controllers/userController.js:
exports.getUser = (req, res) => {
res.send('Obtener información del usuario');
};
exports.createUser = (req, res) => {
res.send('Crear un nuevo usuario');
};
/*
* Definir rutas que usen el controlador
* Archivo routes/userRoutes.js:
*/
const express = require('express');
const router = express.Router();
const userController = require('../controllers/userController');
router.get('/:id', userController.getUser);
router.post('/', userController.createUser);
module.exports = router; Integrar rutas y controladores en la aplicación
Archivo app.js:
const express = require('express');
const app = express();
const userRoutes = require('./routes/userRoutes');
app.use('/users', userRoutes);
app.listen(3000, () => {
console.log('Servidor ejecutándose en http://localhost:3000');
});