Saltar al contenido principal

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 middleware express.json()).
  • req.headers → cabeceras HTTP.
  • req.cookies → cookies enviadas por el cliente (requiere middleware cookie-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.