DTO란?

Data Transfer Object

계층 간 데이터 전송을 위해 사용되는 객체를 의미한다.

Express에는 사용하지 않았던 기능이며, 실제 사용해봤을 때 장점으로는

  1. Controller에서 Service단으로 Data를 전달할 때, 매개 변수를 일일히 다 작성해주는 점에서 굉장히 불편한 점이 많았다.

Ex) Request를 받을때, req.body로 data를 일일히 변수로 지정한 후, 이것을 Service단의 메소드에 넣을 때에도 일일히 넣어준다.

DTO 사용해보기.

먼저 dto 폴더를 생성 후, dto 파일을 생성해준다

// src/board/dto/create-board.dto.ts

import { IsNotEmpty, MaxLength, MinLength } from 'class-validator';

export class CreateBoardDto {
// validation을 위한 데코레이션
  @IsNotEmpty()
  @MinLength(2)
  @MaxLength(20)
  title: string;

  @IsNotEmpty()
  content: string;
}

Controller에서 Body로 받을 때, 타입에 DTO를 넣어준다.

@Post()
  create(@Body() data: CreateBoardDto) {
    return this.boardService.create(data);
  }

Service 단에도 마찬가지로 넣어준다