[개인 스터디] NestJS 정복하기 #04 - DTO | Data Transfer Object

2022. 10. 29. 00:09·백엔드 개발
반응형

DTO (Data Transfer Object) 란

DTO는 계층간 데이터 교환을 위한 "객체"이다. (데이터 교환 시 사용하는 객체 | 일종의 개발 규칙이다.)

DB에서 데이터를 얻어 Service나 Controller 등으로 보낼 때 사용하는 객체를 말한다.

DTO는 데이터가 네트워크를 통해 전송되는 방법을 정의하는 객체이다.

 

# DTO 구현 방식

Interface나 Class를 이용해서 정의 될 수 있다.

(하지만, 클래스를 이용하는 것을 NestJS에서 추천하고 있다.)

 

# DTO (Data Transfer Object)를 쓰는 이유는 무엇인가?

데이터 유효성을 체크하는데 효율적이다.
더 안정적인 코드로 만들어준다. | 타입스크립트의 타입으로도 사용된다.

 


DTO 구현
게시글 생성 API의 Params DTO로 구성하기

 

boards 폴더 아래에 dto 폴더를 생성한다.

dto 폴더 아래에 create-board.dto.ts 파일을 생성한다. (params 형태를 dto에 지정함.)

 

create-board.dto.ts 파일에 게시글 생성 API의 Params를 class 형태로 정의해둔다.

// create-board.dto.ts 파일
export class CreateBoardDto{
    title: string;
    description: string;
}

 

게시글 Controller에서 Params를 Body로 받을 때 (형식을) dto를 이용해서 받는다.

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

 

게시글 Service에서도 Controller에게 받아지는 값을 dto를 통해서 받도록 수정한다.

createBoard(createBoaradDto: CreateBoardDto){

    const {title, description} = createBoaradDto;
    const board: Board = {
        // uuid 모듈을 불러와 로컬에서 유니크한 id값으로 지정
        id: uuid(),
        title,
        description,
        status: BoardStatus.PUBLIC
    }

    // 생성된 게시글 정보를 return 한다.
    this.boards.push(board);
    return board;
}

 

이렇게 함으로써 살펴볼 수 있는 점은,
게시글 생성 API를 만들고나서 {태그, 카테고리 등}와 같은 정보를 추가 개발하고자 한다면 dto 파일만 수정하여,

게시글 생성 API의 Params를 쉽게 업데이트 할 수 있다. (결국, dto라는 건 Params의 유지보수를 쉽게해주기 위한 도구이다.)

반응형

'백엔드 개발' 카테고리의 다른 글

[개인 스터디] NestJS 정복하기 #06 - Pipe 사용법  (0) 2022.10.29
[개인 스터디] NestJS 정복하기 #05 - Pipe { Data Transformation & Validation }  (0) 2022.10.29
[개인 스터디] NestJS 정복하기 #03 - 게시글 생성 API | Create API  (0) 2022.10.28
[개인 스터디] NestJS 정복 - CRUD API 구현  (0) 2022.10.27
[개인 스터디] NestJS 정복하기 #02 - NestJS | src 폴더 로직알아보기  (0) 2022.10.27
'백엔드 개발' 카테고리의 다른 글
  • [개인 스터디] NestJS 정복하기 #06 - Pipe 사용법
  • [개인 스터디] NestJS 정복하기 #05 - Pipe { Data Transformation & Validation }
  • [개인 스터디] NestJS 정복하기 #03 - 게시글 생성 API | Create API
  • [개인 스터디] NestJS 정복 - CRUD API 구현
욱22
욱22
우기의 모든 걸 기록합니다.
    반응형
  • 욱22
    우기 때 만나요
    욱22
  • 전체
    오늘
    어제
    • 우기 때 만나요 (267)
      • 💭 경험&생각 (51)
      • 🌤 일상&취미 (12)
      • 📖 북로그 (29)
      • 백엔드 개발 (27)
      • 📚 스터디 (33)
        • 비즈니스 (0)
        • 프론트엔드 (9)
        • 디자인 (4)
        • 데이터베이스 (8)
        • 데이터 분석 (0)
        • 인공지능 (2)
        • 알고리즘 (10)
      • CS 대학강의 (78)
      • 🌤 프로젝트 (0)
        • UMC 2기: 동네 (15)
        • UMC 3기: 당신의 발자취 (6)
        • ERICA: 스타트업톤 (9)
        • ERICA: 또래튜터링 (2)
      • 🌤 대외활동 (5)
  • 링크

    • Github
  • 인기 글

  • 최근 글

  • 태그

    컴퓨터학부
    대학생 대외활동
    안드로이드
    창업
    java
    자기계발
    디자인베이스
    드럼 레슨
    객체지향 프로그래밍
    오블완
    티스토리챌린지
    Kotlin
    드럼
    생각정리
    자료구조
    파이썬
    스타트업
    대학생 개발 프로젝트
    백준
    AWS
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.1
욱22
[개인 스터디] NestJS 정복하기 #04 - DTO | Data Transfer Object
상단으로

티스토리툴바