- NestJS ParseIntPipe
우선 파이프란 Injectable( ) 데코레이터이며 data transformation 과 data validation 을 주 목적으로 사용한다.
- data transformation 이란?
- 입력데이터를 원하는 형식으로 변환하는 것을 말하며 예를 들어 문자열에서 정수로 바꾸는 것을 의미한다.
- data Validation 이란?
- 단어 그대로 데이터 검증이다. 유효성 체크로 입력 데이터를 평가하고 유효한 경우 변경되지 않은 상태로 전달한다. 그렇지 않고 데이터가 올바르지 않을 떈 예외를 발생시킨다.
Nest의 pipe는 크게 두 종류가 있는데
직접 만들어 사용하는 파이프를 커스텀 파이프 라고 하고
미리 만들어진 것을 빌트인 파이프 라고 한다.
오늘 볼 ParseIntPipe는 빌트인 파이프에 속한다.
해당 코드는 controller부 코드이다.
다음과 같이 id를 "apple" 같은 값으로 보내면 ParseIntPipe 에서 먼저 처리하여 number 타입이 아니기 때문에 에러를 발생시킨다.
Swagger에서 돌려보면 "Validation failed numeric string is expected" 이러한 에러가 출력될 것 이다.
해결방법은 두가지이다.
1. id에 parseIntPipe 유효성 검사를 통과할 수 있게 number type의 값을 넣어준다.
2. id에 string type 을 써야한다면 parseIntPipe 를 지워버리자.