728x90
반응형

node.js 의 express-validator처럼 Nest.js 에는 유효성 검증을 할 수 있는 class-validator가 있다. 

@IsString, @IsNumber, @IsOptional 처럼 검증을 쉽고 편하게 할 수 있는 데코레이터를 제공한다.

나는 데이터 전송 객체인 DTO에 다음 예와 같이 데코레이터를 적용해보았다.

import { IsString } from 'class-validator';
import { IsNumber } from 'class-validator';
import { IsOptional } from 'class-validator';

export class CreateMovieDTO {
  @IsString()
  readonly title: string;
  @IsNumber()
  readonly year: number;
  @IsOptional()
  @IsString({ each: true })
  readonly genres: string[];
}

확실히 express-validator 보다 간결하고 보기 좋게 사용할 수 있었다.

배열을 받는 경우 each: true 조건으로 각 항목을 모두 검사하도록 할 수 있다.

 

아래 사진은 위 DTO를 받는 API에 이상한 변수를 삽입하였을때 데코레이터가 어떤 에러를 발생시키는지 확인한 예다.

위 데코레이터 말고도 @MAX(), @IsOptional(), @IsDate() 등 아주 다양한 데코레이터가 있다. 더 알아보고 싶다면 아래 레퍼런스 참고 !

참고 : https://github.com/typestack/class-validator

728x90
반응형

+ 최근 게시글