파이프 (Pipes: 검증·변환)¶
라우트 핸들러에 값이 도달하기 전에 데이터를 검증하거나 변환하는 역할을 NestJS 의 파이프(Pipe) 가 담당합니다. 데이터스케쳐스 실무 관점에서 정리합니다.
파이프란¶
- 파이프는 컨트롤러 메서드가 호출되기 직전에 실행되어 두 가지를 합니다.
- 변환(transformation): 입력을 원하는 타입으로 바꾼다 (예: 문자열
"42"→Number). - 검증(validation): 입력이 유효하지 않으면 예외를 던져 거부한다.
- 위 예의
ParseIntPipe는id를 정수로 변환하고, 실패하면400 Bad Request를 반환합니다.
기본 제공 파이프¶
ValidationPipe: DTO(클래스)의 데코레이터 규칙 기반 검증.ParseIntPipe/ParseFloatPipe/ParseBoolPipe: 타입 변환.ParseUUIDPipe: UUID 형식 검증.DefaultValuePipe: 값이 없을 때 기본값 주입.
파이프 바인딩 위치 (범위)¶
- 메서드 레벨: 특정 핸들러에만 적용.
- 컨트롤러 레벨: 해당 컨트롤러 전체에 적용.
- 전역(글로벌): 앱 전체에 적용.
whitelist: true는 DTO 에 없는 속성은 자동 제거,transform: true는 페이로드를 DTO 인스턴스로 변환합니다.
데이터스케쳐스 실무 관점¶
- 수집 데이터 검증: D-SKET Events 나 웹훅 수신 시 잘못된 필드가 들어오는 것을 파이프로 차단해, DB 에 오염 데이터가 쌓이는 것을 막습니다.
- 전역 검증 기본화: 새 엔드포인트마다 검증을 깜빡하지 않도록 전역
ValidationPipe를 켜두고, 예외만 DTO 로 명시.
확인 필요¶
- 버전별 파이프 옵션(
transform,whitelist)과 예외 형식은 NestJS 버전에 따라 달라질 수 있으므로 사용 버전 공식 문서를 재확인하세요. (확인 필요)
더 알아보기¶
- 공식: NestJS — Pipes
- 공식: NestJS — Validation