En Express, hay varios métodos para capturar parámetros de una URL:
# Crear un nuevo proyecto
mkdir url-params-demo
cd url-params-demo npm init -y npm install express url-params-demo/
│
├── server.js
└── package.json Los parámetros de ruta son segmentos dinámicos en una URL que se definen utilizando el prefijo : en la ruta.
Estos parámetros permiten capturar información específica de la URL, facilitando el manejo de rutas y la personalización de las respuestas en tus aplicaciones.
Por ejemplo:
const express = require('express');
const app = express();
// Ejemplo básico de parámetro de ruta
app.get('/usuarios/:id', (req, res) => {
const usuarioId = req.params.id;
res.send(`Detalles del usuario con ID: ${usuarioId}`);
});
// Múltiples parámetros de ruta
app.get('/usuarios/:categoria/:id', (req, res) => {
const { categoria, id } = req.params;
res.send(`Categoría: ${categoria}, ID: ${id}`);
});
// Parámetros opcionales con expresión regular
app.get('/producto/:nombre?', (req, res) => {
const nombre = req.params.nombre || 'Producto no especificado';
res.send(`Nombre del producto: ${nombre}`);
}); Query Params):Los parámetros de consulta se encuentran después del ? en la URL.
app.get('/buscar', (req, res) => {
// Obtener parámetros de consulta
const { termino, pagina = 1, limite = 10 } = req.query;
res.json({
termino,
pagina: Number(pagina),
limite: Number(limite),
resultados: [
// Lógica de búsqueda aquí
]
});
});
// Ejemplo de URL:
// /buscar?termino=nodejs&pagina=2&limite=20 Body Params):Para capturar parámetros enviados en el cuerpo de una solicitud POST.
const express = require('express');
const bodyParser = require('body-parser');
const app = express();
app.use(express.json()); // Middleware para parsear JSON
app.use(express.urlencoded({ extended: true })); // Para datos de formulario
app.post('/usuarios', (req, res) => {
const { nombre, email, edad } = req.body;
// Validación de datos
if (!nombre || !email) {
return res.status(400).json({ error: 'Datos incompletos' });
}
res.status(201).json({
mensaje: 'Usuario creado',
usuario: { nombre, email, edad }
});
}); // Middleware de validación para ID de usuario
const validarIdUsuario = (req, res, next) => {
const { id } = req.params;
if (!/^d+$/.test(id)) {
return res.status(400).json({
error: 'ID de usuario inválido'
});
}
next();
};
app.get('/usuarios/:id', validarIdUsuario, (req, res) => {
const usuarioId = req.params.id;
// Lógica de recuperación de usuario
}); const Joi = require('joi');
const esquemaUsuario = Joi.object({
nombre: Joi.string().min(3).max(30).required(),
email: Joi.string().email().required(),
edad: Joi.number().min(18).max(100)
});
app.post('/usuarios', (req, res) => {
const { error, value } = esquemaUsuario.validate(req.body);
if (error) {
return res.status(400).json({
error: error.details[0].message
});
}
// Procesar usuario válido
res.status(201).json(value);
}); const express = require('express');
const app = express();
const PORT = process.env.PORT || 3000;
// Middleware
app.use(express.json());
// Base de datos simulada
const usuarios = [
{ id: 1, nombre: 'Juan', email: 'juan@example.com' },
{ id: 2, nombre: 'María', email: 'maria@example.com' }
];
// Rutas con diferentes tipos de parámetros
app.get('/usuarios', (req, res) => {
const { limite = 10, pagina = 1 } = req.query;
res.json(usuarios.slice(0, Number(limite)));
});
app.get('/usuarios/:id', (req, res) => {
const id = Number(req.params.id);
const usuario = usuarios.find(u => u.id === id);
if (!usuario) {
return res.status(404).json({ error: 'Usuario no encontrado' });
}
res.json(usuario);
});
app.listen(PORT, () => {
console.log(`Servidor corriendo en puerto ${PORT}`);
});