자바스크립트 기반 NestJS 웹 애플리케이션의 데이터 검증 방법

NestJS는 자바스크립트와 TypeScript를 기반으로 하는 프레임워크로, 웹 애플리케이션을 개발하기에 적합한 환경을 제공합니다. NestJS는 강력한 데이터 검증 기능을 제공하여, 사용자가 입력한 데이터의 유효성을 쉽게 확인할 수 있습니다. 이번 블로그 포스트에서는 자바스크립트 기반 NestJS 웹 애플리케이션에서 데이터 검증을 수행하는 방법을 알아보겠습니다.

@nestjs/common 모듈의 ValidationPipe 사용하기

NestJS는 @nestjs/common 모듈에 내장된 ValidationPipe를 사용하여 데이터 검증을 수행할 수 있습니다. ValidationPipe는 들어오는 요청의 데이터를 검증하고, 검증 결과를 콘트롤러에 전달합니다.

먼저, NestJS 애플리케이션의 main.ts 파일에서 ValidationPipe를 설정해야 합니다. 다음과 같이 코드를 작성해주세요.

import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
import { ValidationPipe } from '@nestjs/common';

async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  app.useGlobalPipes(new ValidationPipe());
  await app.listen(3000);
}
bootstrap();

위의 코드에서 app.useGlobalPipes(new ValidationPipe())는 애플리케이션 전역에서 ValidationPipe를 사용하도록 설정합니다. 이렇게 설정하면 모든 들어오는 요청의 데이터가 자동으로 검증됩니다.

DTO(Data Transfer Object)를 사용하여 데이터 검증하기

DTO(Data Transfer Object)는 데이터 전송을 위해 사용되는 객체입니다. NestJS에서는 DTO를 사용하여 데이터를 전송하고 검증할 수 있습니다. DTO에는 사용자가 입력한 데이터의 형식을 정의하고 유효성 규칙을 설정할 수 있습니다.

먼저, DTO 클래스를 생성하고 해당 클래스에 필요한 속성들과 유효성 규칙을 설정해야 합니다. 예를 들어, 사용자의 이름과 이메일을 검증하는 DTO 클래스를 생성하려면 다음과 같이 코드를 작성할 수 있습니다.

import { IsString, IsEmail } from 'class-validator';

export class CreateUserDto {
  @IsString()
  name: string;

  @IsEmail()
  email: string;
}

위의 코드에서는 @IsString() 데코레이터를 사용하여 name 속성이 문자열인지 검증하고, @IsEmail() 데코레이터를 사용하여 email 속성이 이메일 형식인지 검증합니다.

이제 해당 DTO를 사용하여 데이터 검증을 수행하는 컨트롤러를 작성할 수 있습니다. 예를 들어, 다음과 같이 코드를 작성해보겠습니다.

import { Controller, Post, Body } from '@nestjs/common';
import { CreateUserDto } from './dto/create-user.dto';

@Controller('users')
export class UsersController {

  @Post()
  create(@Body() createUserDto: CreateUserDto) {
    // 검증된 데이터를 사용해서 사용자 생성 로직을 수행한다.
    // ...
  }
}

위의 코드에서 @Body() 데코레이터를 사용하여 들어오는 요청의 데이터를 createUserDto에 할당합니다. 이때 createUserDto는 DTO로 정의한 클래스의 인스턴스입니다. ValidationPipe가 자동으로 데이터를 검증하고 유효하지 않은 경우 예외를 발생시킵니다.

결론

이번 블로그 포스트에서는 자바스크립트 기반 NestJS 웹 애플리케이션에서 데이터 검증을 수행하는 방법을 알아보았습니다. @nestjs/common 모듈의 ValidationPipe를 사용하여 전체 애플리케이션에서 데이터 검증을 활성화하고, DTO를 사용하여 데이터의 형식과 유효성 규칙을 정의할 수 있습니다. 이를 통해 웹 애플리케이션에서 사용자 입력 데이터의 유효성을 쉽게 확인할 수 있습니다.

더 자세한 내용은 NestJS 공식 문서를 참고하시기 바랍니다.

#NestJS #데이터검증