본문 바로가기

NestJs API 만들기

09. REST API - DTO(Data Transfer Obejct) AND Validation (1)

 

validatior를 적용하기 위해 class-validator, class-transformer 라이브러리를 설치한다.

 

 

 

 

 

 

 

 

 

 

main.ts 파일에 추가한 ValidationPipe와 Typescript를 활용한 타입으로 유효성 검사를 하기 위해 Dto(Data Transfer Obejct) 객체를 생성한다.

class-validator를 임포트한 후 유효성을 체크할 속성(Property)에  @IsString, @IsNumber 데코레이터(Decorator)를 설정한다.

 

 

 

 

 

 

 

 

 

main.ts 파일에서 ValidationPipe 옵션 중 whitelist를 true로 하게 되면 DTO에 정의되지 않은 프로퍼티는 자동으로 제거된다.

예를들어, DTO에는 title, year, genres 속성(Property)가 있는데 insomnia 프로그램에서 JSON으로 hacked 값을 넘긴다면 아예 없어져서 백엔드 코드에서는 보이지 않는다.

ValidationPipe 옵션에서 forbidNonWhitelisted를 true로 하게 되면 DTO에 정의되지 않은 값들이 들어왔을때 에러를 낸다.

 

*VaildationPipe

설정 옵션 설명
whitelist:true DTO에 정의되지 않은 값은 자동 제거
forbidNonWhitelisted DTO에 없는 값이 오면 에러 발생

 

 

 

 

 

 

 

 

 

 

ValidationPipe 옵션 중 tranfrom를 true로 하게되면 요청에 값에 대해서 원하는 타입으로 변환해준다.