NestJS의 DTO 기본 개념

bin-lee·2022년 1월 7일
0

DTO(Data Transfer Object)

DTO는 Nest의 디자인 패턴 중 하나로, 계층간 데이터 교환을 위한 객체이다. 즉, 데이터를 송수신할 때의 규격이라고 생각할 수 있다. Request용 DTO와 Response용 DTO는 View를 위한 클래스가 된다.

위 그림처럼 클라이언트가 body에 실어서 보내는 데이터를 DTO 객체로 만들어서 validation을 하고 타이핑 검사를 한 후 안전하게 Controller로 보낸다. 이 DTO는 Service를 거쳐 DB까지 도착한다.


class CatRequestDto {
  @IsEmail()
  @IsNotEmpty()
  email: string;
  
  @IsString()
  @IsNotEmpty()
  password: string;
  
  @IsString()
  @IsNotEmpty()
  name: string;
}

src 내 프로젝트 폴더 안에 dto라는 폴더를 만들고 cats.request.dto파일을 만들었다. CatRequestDto 객체에는 회원가입할 때 필요한 정보인 email과 password, name이 있다. 이 CatRequestDto를 controller의 회원가입 메서드 인자에 타이핑해 준다.

... signUP(@Body() body: CatRequestDto) {
  return this.catsService.signUp(body) ...

이제 body에 실어 보내진 데이터는 DTO 객체로 만들어져서 validation과 타이핑 검사를 통해 안전하게 받아진다. 만약 email을 email 형식으로 작성하지 않았거나 입력하지 않았으면 에러가 발생할 것이다.

profile
🚀 오늘 배운 건 오늘 적자

0개의 댓글