입력받는 데이터를 검증하기
main.ts에 파이프 추가
import { ValidationPipe } from '@nestjs/common';
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
async function bootstrap() {
const app = await NestFactory.create(AppModule);
app.useGlobalPipes(
new ValidationPipe({
whitelist: true, //dto 정의된 타입외 값은 허용하지 않는다.
forbidNonWhitelisted:true, //정해진 필드가 아닌 경우 에러를 보낸다.
transform:true, //데이터를 받아서 넘겨줄때 자동으로 타입을 변환해준다.
})
);
await app.listen(3333);
}
bootstrap();
검증을 위한 도구를 설치
npm i --save class-validator class-transformer
dto파일 생성
import { IsDate, IsEmail, IsOptional, IsString } from 'class-validator';
export class CreateMemberDto{
@IsString() //입력받는 값이 문자형
readonly TYPE: string;
@IsString()
readonly NAME: string;
@IsString()
readonly PASSWORD: string;
@IsOptional() //필수로 입력 받지 않아도 됨
@IsString()
@IsEmail() // 이메일 형식인지 검증
readonly EMAIL: string;
@IsString()
readonly LOGIN_ID: string;
@IsOptional()
@IsDate() // 날짜형인지 검증
readonly CREATE_DATE_TIME: Date;
}
각각의 데코레이션 옵션들은 깃허브에서 확인 가능
github.com/typestack/class-validator#usage
Controcontroller 에서 입력받는 @Body의 타입을 생성산 dto class로 지정하여 service로 보냄
@Body() register: CreateMemberDto
service에서 받아오는 부분도 수정
addMember(register: CreateMemberDto)
니콜라스 강좌에서 @nestjs/mapped-types 에 대한 내용도 나오는데
원본dto를 import하고 PartialType를 사용하여 상속 받아 class를 생성하면
export class 업데이트dto extends PartialType(원본dto) {}
원본dto의 모든 속성이 선택적으로 사용해도 된다.
'Learning > NestJS' 카테고리의 다른 글
NestJS Authentication(4) jwt(수정) (0) | 2021.01.11 |
---|---|
NestJS Authentication(3) 환경변수 (0) | 2021.01.07 |
NestJS Authentication(2) jwt+환경변수 (0) | 2021.01.06 |
NestJS Authentication(1) Login (0) | 2021.01.03 |
NestJS 시작 하다 (0) | 2021.01.01 |