티스토리 뷰
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 |