DTO?? 뭔데???

0
post-thumbnail

1. DTO

  • DTO(Data transfer object) : 데이터 전송 객체, 즉 네트워크 간에 데이터를 어떤 식으로 보낼지를 정의한 객체이다.
    쉽게 말하면, 어떠한 값이 어떤 타입을 가지고 이 값이 필수인지 옵션인지 정의하기 위한 파일이다.
  • 파일을 만들때에는 어떤 부분을 검증할것인지를 정하고 만들면 된다.

1) 필요한 이유

  • 클라이언트에서 전송하는 객체는 기본적으로 타입을 보장하지 않는다. 그래서 데이터를 받기 전에 타입 검사와 유효성 검사를 통해 문제를 예방하는 것이 좋다. 그런데, DTO를 설정하면 이 부분을 실행할 수 있다.

2) 예제

export class CreateUserDto {
  id: number; // 유저 고유 아이디
  name: string; // 유저 이름
}

export class UpdateUserDto {}
  • DTO는 우리가 전송받을 클래스 객체를 선언한다. 유저를 생성하는 부분, 수정하는 부분으로 만들어져 있다. 위와 같이 DTO를 선언하면 전송 데이터 형식을 알 수 있다.
import { Field, Int, InputType } from '@nestjs/graphql';

@InputType()
export class CreateCoffeeInput {
  @Field(() => String)
  menu: string;

  @Field(() => Int)
  price: number;

  @Field(() => Int)
  kcal: number;

  @Field(() => Int)
  saturatedfat: number;

  @Field(() => Int)
  protein: number;

  @Field(() => Int)
  salt: number;

  @Field(() => Int)
  sugars: number;

  @Field(() => Int)
  Caffeine: number;
}
  • 내 과제의 DTO파일이다.
  • @InputType() : 타입을 정해 주었다.
  • cf. Field는 데이터베이스의 저장하는 타입이다.

마무리

=> 솔직히, 거창한건 없다. 쉽게 말해 DTO는 유효성 검사 부분에 대해 편리함을 주고, 어떤 타입인지 어떤 부분을 검증할것인지에 대한 파일일뿐이다.

profile
끝날때 까지 끝난게 아니야. 결국 내가 이겨!

0개의 댓글