DTO (data transfer object)

조성민·2022년 7월 26일
0

Nest

목록 보기
2/4

DTO란 데이터 전송 객체.
네트워크 간에 데이터를 어떤 식으로 보낼지를 정의한 객체 또는 계층간 데이터 교환을 위해 사용하는 객체입니다.

#예시

// createBoard.input.ts


import { InputType, Field } from '@nestjs/graphql';

@InputType()
export class CreateBoardInput {
  @Field(() => String)
  writer: string;

  @Field(() => String)
  title: string;

  @Field(() => String)
  contents: string;
}

@InputType()를 사용하여 gql에게 이건 InputType이라고 알려줍니다.



MVC 패턴을 통해 간략하게 DTO의 구체적인 용례 및 필요성을 보겠습니다.

Controller는 View와 도메인 Model의 데이터를 주고 받을 때 별도의 DTO 를 주로 사용합니다. 도메인 객체를 View에 직접 전달할 수 있지만, 민감한 도메인 비즈니스 기능이 노출될 수 있으며 Model과 View 사이에 의존성이 생기기 때문입니다.

하지만 DTO를 활용하면 도메인 Model을 캡슐화하고, UI 화면에서 사용하는 데이터만 선택적으로 보낼 수 있습니다. 즉, DTO는 클라이언트 요청에 포함된 데이터를 담아 서버 측에 전달하고, 서버 측의 응답 데이터를 담아 클라이언트에 전달하는 계층간 전달자 역할을 합니다.

profile
풀리면 재밌는 알고리즘

0개의 댓글