Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

187
Vistas
Express middleware para cambiar condicionalmente el resultado de la respuesta

Lo que quiero lograr es cuando un controlador expreso falla al lanzar una excepción no controlada o devolver una respuesta vacía como undefined o [] , quiero que el controlador devuelva una respuesta simulada predefinida en lugar de fallar. Esto significa que mi servidor nunca falla, ya que devuelve los datos reales normales o los datos simulados predefinidos. Por supuesto, solo activaré esto en el entorno de desarrollo y nunca en producción.

Creo que un middleware es ideal porque no quiero contaminar la lógica de todos los controladores al inyectar la verificación de respuesta.

¿Es esto posible con un middleware en express? Si no, ¿cuál es una forma más limpia de lograr esto?

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

El valor de retorno de un controlador de middleware es irrelevante, porque un controlador de middleware es asíncrono por naturaleza. Hace una de tres cosas:

  • Completa la respuesta llamando a res.end(...) o similar.
  • Informa de un error llamando a next(err) .
  • Delega la decisión al siguiente middleware llamando a next() .

Los errores se pueden capturar con un middleware de manejo de errores adicional, y las excepciones se pueden convertir en errores como se explica en [ExpressJs]: El controlador de errores personalizado no detecta excepciones .

Sin embargo, no puede cambiar una respuesta después de que se haya enviado. Además, escribes

un controlador express falla... al... devolver una respuesta vacía

pero una respuesta vacía no es un fracaso. Si desea tratar las respuestas vacías como fallas, pero solo en producción, le sugiero que las maneje como errores especiales. En lugar de responder con res.json([]) , por ejemplo, escribe next({emptyResponse: []}) y tiene un middleware especial de manejo de errores en desarrollo solo para manejar estos:

 app.use(function(err, req, res, next) { if (err.emptyResponse) { console.error(err.emptyResponse); res.end("Mock response"); } else next(err); // delegate to the standard error handler });

Tal vez hay una idea errónea de lo que es una respuesta. El servidor transmite la respuesta al cliente, solo el cliente puede "obtener" la respuesta en este sentido. Las respuestas no se pueden pasar entre middlewares.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda