NestJS에서 DTO란?

Olivia·2023년 8월 9일
0

[NestJS]

목록 보기
7/12
post-thumbnail

NestJs에서 DTO란?

NestJS에서 DTO(Data Transfer Object)는 주로 클라이언트와 서버 간의 데이터를 교환하기 위한 객체다.
즉, 데이터베이스에서 데이터를 얻어 Service나 Controller 사이에서 데이터를 보낼 때 사용되는 객체다.

교환할 데이터가 많은 경우, 프로퍼티가 많아지게 되고, 여러곳에서 사용하게 된다.
만약에 프로퍼티 중 하나를 삭제한다던가 수정이 있을 경우, 해당 프로퍼티를 사용하고 있는 곳의 프로퍼티 역시 직접 수정해야한다.
그렇게되면 오타라던지 실수가 발생할 수 있으며 효율적이지도 않다.

클라이언트로 부터 요청과 함께 데이터를 받을 때 DTO를 사용하게되면,
해당 데이터를 구조화하고, 유효성 검사를 할 수 있다.
이에 따라 올바르지 않은 데이터가 서버로 들어오는 것을 방지할 수 있다.
또한, 타입스크립트의 타입으로도 사용되기 때문에 더 안정적인 코드로 만들어 준다.

DTO는 interface 혹은 class를 사용해서 정의하는데,
Class를 사용해서 정의하는 것을 권장하고 있다.

class가 interface보다 프로그램이 실행되는 중에 작동하기 때문에, 
파이프와 같은 기능을 사용할 때 더 유용하기 때문이다.

NestJs에서 DTO 생성 방법

  1. 해당 폴더 안에서 dto라는 폴더를 만든다.
  2. 해당 기능을 위한 dto 파일을 만들어준다.
  3. class로 dto를 정의한다.
    export class CreateBoardDto {
      title: string;
      content: string;
    }

NestJs에서 DTO 적용 방법

Controller 적용

@Post()
createBoard(@Body() createBoardDto: CreateBoardDto): Board{
	return this.boardsService.createBoard(createBoardDto);
}

Service 적용

 createBoard(createBoardDto: CreateBoardDto) {
    const { title, content } = createBoardDto;
    const board: Board = {
      id: uuid(),
      title,
      content,
    };
    this.boards.push(board);
    return board;
  }
profile
👩🏻‍💻

0개의 댓글