계층간 데이터 교환을 위한 객체이다.
DB에서 데이터를 얻어 Service나 Controller 등으로 보낼 때 사용하는 객체를 말한다.
DTO는 데이터가 네트워크를 통해 전송되는 방법을 정의하는 객체이다.
interface나 class를 이용해 정의할 수 있지만 NestJS에서는 클래스를 이용하는 것을 추천하고 있다.
NestJS에서 데이터 처리의 흐름을 보면 게시글에 사용하는 프로퍼티들(title, description 등)을 여러곳에 사용한다.
현직에서 사용하는 프로퍼티의 수가 아주 많다. 이때, 프로퍼티의 이름을 바꿔줘야하는 경우 다른 모든 곳에서 바꿔줘야하기 때문에 유지 보수가 힘들 수 있다.
이러한 문제를 DTO가 해결할 수 있다.
John Ahn. "따라하면서 배우는 NestJS" 유튜브, 2021, https://www.youtube.com/watch?v=3JminDpCJNE&t=4201s