Nest.JS (4) Data Transfer Object의 개념

Seong·2022년 11월 18일
0

Nest.js

목록 보기
4/9
post-thumbnail

사실 Nest.js가 아니라 객체지항 언어에 대한 내용이고, 스프링에서도 이용했지만 Nest쪽으로 기술했다.

DTO란?

DTO를 쓰는이유:

  • 데이터의 유효성을 체크하는데 효과적
  • 더 안정적인 코드로 만들어줌

DTO파일 만들기

클래스파일을 쓰는이유:클래스는 인터페이스와 다르게 런타임에서 작동하기 떄문에 파이브 같은 기능을 이용할 때 더 유용하다.

export class BoardDto {
  title: string;
  description: string;
}

이제 컨트롤러와 서비스에서 BoardDto를 주입한다.
컨트롤러

  @Post()
  createBoard(@Body() boardDto: BoardDto): Board {
    return this.boardService.createBoard(boardDto);
  }

서비스

 createBoard(boardDto: BoardDto): Board {
   const { title, description } = boardDto;
   const board: Board = {
     id: uuid(),
     title,
     description,
     status: BoardStatus.PUBLIC,
   };
   this.boards.push(board);

그후 Pipe를 이용하여 유효성 검사를 한다

pipe를 이용한 유효성 검사

Validation를 사용하기 위해 패키지를 설치한다

$ npm i class-validator class-transformer

main.ts

  app.useGlobalPipes(new ValidationPipe())

자세한 옵션은 공식문서에서 확인할 수 있다.

그 후 DTO파일에서 데코레이터로 Validation 유효성 검사를 해준다.

import { IsString } from 'class-validator'
export class BoardDto {
  @IsString()
  title: string;
  @IsString()
  description: string;
}
profile
메모장

0개의 댓글