자바스크립트 기반 NestJS 웹 애플리케이션의 커스텀 밸리데이션

NestJS는 Node.js를 기반으로 한 서버 사이드 프레임워크로, TypeScript와 JavaScript 둘 다 지원합니다. NestJS는 강력한 밸리데이션 기능을 제공하며, 이 기능을 사용하여 사용자 지정 밸리데이션을 구현할 수 있습니다. 이번 블로그에서는 NestJS에서 자바스크립트를 기반으로 한 웹 애플리케이션에서 커스텀 밸리데이션을 구현하는 방법을 살펴보겠습니다.

NestJS의 밸리데이션 기능

NestJS는 클래스 및 프로퍼티 레벨에서 밸리데이션을 지원합니다. class-validator 모듈을 사용하여 간단하게 유효성 검사 데코레이터를 작성할 수 있습니다. 이를 통해 데이터를 검증하고 유효하지 않은 데이터 경우 적절한 에러를 반환할 수 있습니다.

커스텀 밸리데이션 구현하기

커스텀 밸리데이션을 구현하려면 먼저 ValidatorConstraint 데코레이터를 사용하여 커스텀 밸리데이션 클래스를 작성해야 합니다. 아래는 간단한 이메일 밸리데이션을 체크하는 커스텀 밸리데이션 클래스의 예입니다.

import { ValidatorConstraint, ValidatorConstraintInterface, ValidationArguments } from 'class-validator';

@ValidatorConstraint({ name: 'customEmail', async: false })
export class CustomEmailValidator implements ValidatorConstraintInterface {
  validate(email: string, args: ValidationArguments) {
    // 이메일 유효성을 체크하는 로직을 구현합니다.
    return email.includes('@');
  }

  defaultMessage(args: ValidationArguments) {
    return '유효한 이메일 형식이 아닙니다.';
  }
}

이제 위에서 작성한 커스텀 밸리데이션을 사용할 수 있습니다. 밸리데이션을 적용하려는 DTO(데이터 전송 객체)에서 커스텀 밸리데이션을 사용하는 방법은 다음과 같습니다.

import { IsEmail, Validate } from 'class-validator';
import { CustomEmailValidator } from './custom-email.validator';

export class UserDto {
  @IsEmail()
  @Validate(CustomEmailValidator)
  email: string;
}

위의 예제에서 @IsEmail() 데코레이터는 이메일 형식인지 확인하고, @Validate(CustomEmailValidator) 데코레이터는 위에서 작성한 커스텀 밸리데이션을 적용합니다.

결론

NestJS는 강력한 밸리데이션 기능을 제공하여 데이터의 유효성을 검증할 수 있습니다. 자바스크립트를 기반으로 한 웹 애플리케이션에서 커스텀 밸리데이션을 구현하는 방법에 대해 알아보았습니다. NestJS의 밸리데이션 기능을 적재적소에 활용하여 웹 애플리케이션의 안전성을 높이는 데에 도움이 될 것입니다.

더 자세한 정보는 NestJS 공식 문서를 참조해주세요.

#NestJS #밸리데이션