티스토리 뷰

Node.js

DTO ( Data Transfer Object)

세이브 2021. 12. 29. 18:16


DTO ( Data Transfer  Object)

DTO는 무엇인가?
계층간 데이터 교환을 위한 객체.

DB에서 데이터를 얻어 Service나 Controller 등으로 보낼 때 사용하는 객체를 말한다.
DTO는 데이터가 네트워크를 통해 전송되는 방법을 정의하는 객체라고 볼 수 있습니다. 
interface나 class를 이용해서 정의될 수 있습니다. (클래스를 사용하는 것을 nest.js에서 추천한다.)


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




Nest.js에서 데이터 처리의 흐름을 보면...
board 를 위한 property들을 여러 곳에서 사용하고 있다. (title, description... )
지금은 간단한 애플리케이션을 만들기 때문에 몇 개의 프로퍼티만 불러주면 된다.
하지만 정말 많은 프로퍼티를 갖고 여러 군데에서 이용한다면? 
또 그 프로퍼티의 이름을 갑자기 바꿔줘야 한다면 어떻게 해야 할까?
이러한 경우에 DTO를 사용해서 이 문제를 해결할 수 있다. 

 


Interface or Class   for DTO
dto 파일작성은 클래스를 이용하자
클래스는 인터페이스와 다르게 런타임에서 작동하기 때문에 
파이프 같은 기능을 이용할 때 더 유용하다. 그래서 클래스를 사용해서 DTO를 작성한다.

export class CreateBoardDto{
    title: string;
    descripion: string;
}


이렇게 DTO를 만들었으면 실제 Controller와 Service에서 DTO에 적용하자


@Post()
createBoard(@Body() createBoardDto: CreateBoardDto) : Board{
    return this.boardService.createBoard(createBoardDto);
}
--- board.controller.ts


createBoard(createBoardDto: CreateBoardDto): Board{
    const {title, description} = createBoardDto;
    const board : Board ={
        ...
    }
}

'Node.js' 카테고리의 다른 글

Pipe  (0) 2021.12.29
DI (Dependecy Injection)  (0) 2021.12.29
Providers  (0) 2021.12.29
Nest.js Core  (0) 2021.12.29
Express 미들웨어  (0) 2021.09.03
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/03   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
글 보관함