HttpException들을 다루는 HttpExceptionFilter

// http.exception-filter.ts
import ...

@Catch(HttpException)  // @Catch()에 넣은 에러들을 잡아냄
export class HttpExceptionFilter implements ExceptionFilter {
	catch(exception: HttpException, host: ArgumentsHost) {
		const context = host.switchToHttp();
		const request = context.getRequest();
		const response = context.getResponse();
		const status = exception.getStatus();

		// 에러 로그 파일 생성, 에러 모니터링 시스템에 API 콜 등 여러 작업이 가능함
		// 사실 에러 응답 변환보다 이렇게 추가 작업을 할 수 있다는 것이 유용함
		
		response
			.status(status)
			.json({  // Exception 응답을 다음과 같은 형식으로 바꿔줌
				statusCode: status,
				message: exception.message,
				timestamp: new Date().toLocaleString('kr'),
				path: request.url,
			});
	}
}

원래 에러 발생시 응답

Untitled

위 필터를 지정하면 다음과 같이 지정한 형식으로 출력됨

@UseFilters(HttpExceptionFilter)  // 필요한 곳에 필터 추가

Untitled

만약 전체적으로 필터를 적용하고 싶다면

// main.ts
async function bootstrap() {
		
		// 생략 ..

		app.useGlobalFilters(new HttpExceptionFilter());

		// 생략 ..

과 같이 전체적으로 필터를 적용할 수 있음