Peticiones y respuestas
La gestión de peticiones (requests) y respuestas (responses) es fundamental para manejar la comunicación entre el cliente y el servidor. La información enviada por el cliente se accede a través del objeto req y las respuestas se envían utilizando el objeto res.
Manejo de peticiones
El objeto req contiene toda la información de la solicitud HTTP, incluyendo parámetros, cabeceras, cuerpo de la petición y archivos adjuntos.
Ejemplo de acceso a datos en un controlador o ruta:
app.post('/usuarios', (req, res) => {
const { nombre, edad } = req.body;
res.json({ nombre, edad });
});
Algunas propiedades y métodos útiles de req:
req.params→ parámetros de ruta (/usuarios/:id).req.query→ parámetros de consulta (/usuarios?edad=25).req.body→ datos enviados en el cuerpo de la solicitud (requiere middlewareexpress.json()).req.headers→ cabeceras HTTP.req.cookies→ cookies enviadas por el cliente (requiere middlewarecookie-parser).
Generación de respuestas
El objeto res se utiliza para enviar respuestas al cliente:
// Respuesta JSON
res.json({ mensaje: 'Usuario creado correctamente' });
// Respuesta con código HTTP
res.status(201).json({ mensaje: 'Recurso creado' });
// Respuesta simple en texto
res.send('Operación completada');
// Redirección
res.redirect('/inicio');
Manejo de cabeceras y cookies
Se pueden personalizar cabeceras y cookies fácilmente:
res.set('X-Powered-By', 'Express');
res.cookie('token', 'abc123', { maxAge: 3600000, httpOnly: true });
res.send('Cabeceras y cookie configuradas');
Buenas prácticas y convenciones
- Validar siempre los datos recibidos antes de procesarlos.
- Mantener las respuestas consistentes en toda la aplicación, usando JSON para APIs.
- Devolver códigos HTTP adecuados según la acción realizada (200, 201, 400, 401, 404, etc.).
- Evitar lógica compleja directamente en las rutas; delegar a controladores o servicios.
- Manejar errores y excepciones de manera centralizada con middleware de manejo de errores.