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개의 댓글

Powered by GraphCDN, the GraphQL CDN