Skip to content

Latest commit

 

History

History
59 lines (50 loc) · 1.61 KB

240628_DTO, mapper.md

File metadata and controls

59 lines (50 loc) · 1.61 KB

DTO & Mapper

DTO (Data Transfer Object)

Json -> DTO -> Model

  • 데이터를 모델 클래스로 변환할 때 사용되는 중간 전달 객체다
  • 못된 데이터 소스(예: 잘못된 JSON 데이터)를 받았을 때 애플리케이션이 오류 없이 동작하도록 하기 위한 클라이언트 개발자의 방어 수단

DTO 코드 예시

Json 데이터

{
  "userId": 1,
  "id": 1,
  "title": "hahaha",
  "completed": false
}

DTO 코드

class TodoDto {
  num? userId;
  num? id;
  String? title;
  bool? completed;

  TodoDto({
    this.userId,
    this.id,
    this.title,
    this.completed,
  });

  TodoDto.fromJson(Map<String, dynamic> json) {
    // JSON 데이터를 객체로 변환하는 로직
  }

  // 선택 사항: 객체를 JSON으로 변환하는 메서드
  Map<String, dynamic> toJson() {
    // 객체를 JSON으로 변환하는 로직
  }
}

모델 클래스와 비교하여 어떤 특징이 있는가?

  • 모든 필드가 Nullable 변수
  • 직렬화, 역직렬화 제공

즉, Json을 무지성으로 받아들인다
기존 모델 클래스를 Dto가 대체한다

Dto 만드는 방법

1. JsonToDto 플러그인

  • 무지성으로 Json을 받아들이기 편한 플러그인

2. JsonSerializable