1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| import { ArgumentsHost, Catch, ExceptionFilter, HttpException, HttpStatus } from '@nestjs/common' import { FastifyReply, FastifyRequest } from 'fastify' import { BusinessExceptions } from './business.exception.filter'
@Catch(HttpException) export class HttpExceptionsFilter implements ExceptionFilter { catch(exception: HttpException, host: ArgumentsHost) { const ctx = host.switchToHttp() const response = ctx.getResponse<FastifyReply>() const request = ctx.getRequest<FastifyRequest>() const status = exception.getStatus()
if (exception instanceof BusinessExceptions) { const error = exception.getResponse() response.status(HttpStatus.OK).send({ data: null, status: error['code'], extra: {}, message: error['message'], success: false, }) return } response.status(status).send({ statusCode: status, timestamp: new Date().toISOString(), path: request.url, message: exception.getResponse(), }) } }
|