Skip to main content

Filtros e Interceptores

AllExceptionsFilter — src/app/core/filters/all-exceptions.filter.ts

Filtro global registrado en main.ts. Captura todos los errores de la aplicación y los convierte al formato estándar.

Tipos de excepción manejados

TipoRespuesta
AppExceptionUsa el statusCode y mensaje de la excepción de negocio
HttpException (NestJS)Usa el statusCode HTTP y el mensaje del framework
Cualquier otro Error500 Internal Server Error con mensaje genérico

Formato de respuesta de error

{
"statusCode": 400,
"status": "error",
"message": "Descripción del error",
"data": null
}

AppException — src/app/core/exceptions/app.exception.ts

Excepción personalizada para errores de negocio. Extiende HttpException.

throw new AppException('Contact is blocked', HttpStatus.FORBIDDEN);

Permite lanzar errores con mensajes específicos del dominio que el AllExceptionsFilter reporta directamente al cliente.


ResponseInterceptor — src/app/core/interceptors/response.interceptor.ts

Interceptor global registrado en main.ts. Normaliza todas las respuestas exitosas.

Comportamiento

  • GET requests: envuelve el resultado en { results, meta }
  • POST / PATCH / DELETE: envuelve el resultado en { data }
  • Loggea cada request: método, URL, statusCode, duración en ms (canal HTTP)

Formato final

// GET
{
"statusCode": 200,
"status": "success",
"message": "OK",
"data": {
"results": [ ... ],
"meta": { "total": 50, "page": 1, "limit": 10 }
}
}

// POST / PATCH / DELETE
{
"statusCode": 201,
"status": "success",
"message": "Created",
"data": { ... }
}