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

관련 채용 정보