이 코드는 NestJS 프레임워크에서 사용되는 파이프 중 하나인 ValidationPipe
를 전역으로 사용하도록 설정하는 부분입니다. NestJS는 TypeScript 기반의 서버 사이드 프레임워크로, 코드의 모듈화와 의존성 주입을 강조하며, 클래스 기반의 구조를 채택하고 있습니다.
여기서 ValidationPipe
는 요청이나 응답을 처리하기 전에 데이터 유효성을 검사하는 역할을 합니다. 이 파이프를 전역으로 설정하면 애플리케이션의 모든 요청에 대해 데이터 유효성 검사가 자동으로 수행됩니다.
설정 옵션은 다음과 같습니다:
transform: true
: 유효성 검사 후에 변환을 허용합니다. 즉, 파이프는 유효성 검사 이후에 데이터를 변환할 수 있습니다.
whitelist: true
: 유효성 검사된 객체에서 지정되지 않은 속성들을 필터링하여 제거합니다. 이렇게 하면 유효성 검사된 속성만 남게 됩니다.
transformOptions: { enableImplicitConversion: true }
: 암시적 변환을 허용합니다. 이 옵션이 활성화되면 자동으로 형 변환이 이루어집니다.
예를 들어, 다음과 같은 DTO(Data Transfer Object) 클래스가 있다고 가정해 봅시다:
class CreateUserDto {
@IsString()
@IsNotEmpty()
username: string;
@IsEmail()
email: string;
@IsInt()
@IsNotEmpty()
age: number;
}
위에서 정의한 CreateUserDto
클래스를 사용하는 컨트롤러의 메서드에 요청이 들어오면, ValidationPipe
는 이 DTO 클래스에 정의된 유효성 검사 데코레이터를 기반으로 요청 데이터를 자동으로 검사합니다. 설정된 옵션에 따라 변환과 필터링이 이루어집니다. 이를 통해 애플리케이션에서 유효하지 않은 데이터로 인한 에러를 사전에 방지할 수 있습니다.