Nest JS Class Validator & Class Transformers
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
개발 툴
대상자
- NestJS를 사용하는 백엔드 개발자
- 데이터 유효성 검증 및 변환 기능이 필요한 API 개발자
- 중간 수준 이상의 TypeScript/JavaScript 경험자
핵심 요약
- Class Validator는
@IsString()
/@IsNotEmpty()
등의 데코레이터로 요청 데이터 검증 - Class Transformers는
@Type(() => UserDTO)
데코레이터로 중첩 객체 자동 변환 reflect-metadata
패키지가 메타데이터 기반 데코레이터 기능을 지원
섹션별 세부 요약
1. Class Validator 기초 사용법
sendMessageDTO
클래스에@IsString()
/@IsMongoId()
등 10+ 유효성 검증 데코레이터 적용plainToInstance()
함수로req.body
를 DTO 인스턴스로 변환ValidationPipe({transform: true})
로 자동 변환 + 검증 처리
2. 중첩 객체(Nested Object) 처리
@ValidateNested()
데코레이터로 중첩 DTO 검증 활성화@Type(() => UserDTO)
데코레이터로 중첩 객체 타입 변환- 예시:
user
객체가UserDTO
인스턴스로 자동 변환
3. 데이터 변환 기능
@Transform(({value}) => value.toLowerCase())
로 필드 값 변환reflect-metadata
패키지가 데코레이터 기반 메타데이터 저장/읽기를 가능하게 함
4. ValidationPipe 설정
app.useGlobalPipe(new ValidationPipe({transform: true}))
로 글로벌 파이프 설정@Body('sendMessage')
어노테이션으로 자동 변환/검증된 DTO 사용
결론
- 필수 데코레이터 조합:
@ValidateNested()
+@Type()
- ValidationPipe 설정 시 자동 변환 및 검증 적용
reflect-metadata
설치 필수 (NestJS 기본 제공)