Nest.js는 TypeScript를 기반으로 하는 서버사이드 애플리케이션을 개발할 수 있도록 도와주는 프레임워크입니다. 이 프레임워크는 강력한 예외 처리 메커니즘을 제공하여 애플리케이션의 안정성을 높일 수 있습니다. 예외 필터는 Nest.js 애플리케이션에서 발생한 예외를 캐치하고 처리할 수 있는 중요한 도구입니다.
이번 포스트에서는 Nest.js 애플리케이션에서 타입스크립트를 사용하여 예외 필터를 작성하는 방법에 대해 알아보겠습니다.
Nest.js 예외 필터란?
Nest.js 예외 필터는 애플리케이션에서 발생한 예외를 캐치하고 사용자 정의된 방식으로 처리할 수 있게 해줍니다. 이를 통해 애플리케이션의 예외 처리 로직을 단일 장소에 유지하고 중복을 최소화할 수 있습니다.
타입스크립트로 Nest.js 예외 필터 작성하기
예외 필터 클래스 생성
먼저 예외 필터 클래스를 생성해야 합니다. 이 클래스는 Nest.js의 ExceptionFilter
인터페이스를 구현해야 합니다. 아래는 예외 필터 클래스의 간단한 예제입니다.
import { ExceptionFilter, Catch, ArgumentsHost, HttpException } from '@nestjs/common';
import { Request, Response } from 'express';
@Catch(HttpException)
export class HttpExceptionFilter implements ExceptionFilter {
catch(exception: HttpException, host: ArgumentsHost) {
const ctx = host.switchToHttp();
const response = ctx.getResponse<Response>();
const request = ctx.getRequest<Request>();
const status = exception.getStatus();
response
.status(status)
.json({
statusCode: status,
timestamp: new Date().toISOString(),
path: request.url,
});
}
}
위 코드에서 @Catch(HttpException)
데코레이터는 해당 클래스가 HttpException
을 캐치하고 처리한다는 것을 나타냅니다. catch
메소드에서는 예외를 캐치하고 사용자 정의된 방식으로 처리하는 로직이 작성됩니다.
예외 필터 적용
마지막으로, 작성한 예외 필터를 애플리케이션에 적용해야 합니다. 이를 위해서는 모듈 레벨에서 APP_FILTER
프로바이더를 사용하여 예외 필터를 등록해야 합니다. 예를 들어, 전역 예외 필터를 등록하는 방법은 다음과 같습니다.
import { Module } from '@nestjs/common';
import { APP_FILTER } from '@nestjs/core';
import { HttpExceptionFilter } from './http-exception.filter';
@Module({
providers: [
{
provide: APP_FILTER,
useClass: HttpExceptionFilter,
},
],
})
export class AppModule {}
위 코드에서 APP_FILTER
프로바이더를 사용하여 HttpExceptionFilter
클래스를 등록하고 있습니다.
마무리
이제 타입스크립트로 Nest.js 예외 필터를 작성하는 방법에 대해 알아보았습니다. 예외 필터를 사용하면 애플리케이션의 예외 처리를 효율적으로 관리할 수 있으며, 손쉽게 공통된 에러 응답을 설정할 수 있습니다.
더 많은 정보나 실제 예제에 대해서는 Nest.js의 공식 문서를 참고하십시오.