0Pricing
Kotlin Multiplatform Academy · Урок

Преобразование DTO в модели предметной области

Отделяйте сетевые структуры от типов предметной области

«Преобразование DTO в модели предметной области» — бесплатный урок Kotlin Multiplatform Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Kotlin Multiplatform Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Kotlin Multiplatform Academy содержит 4 уроков всего.

Части этого урока еще не переведены и отображаются на английском.

Two Kinds of Models

Your app actually has two shapes of data: the raw DTO from the API and the clean domain model your code wants.

What a DTO Is

A DTO, or data transfer object, mirrors the JSON exactly, even when the field names are messy or awkward.

@Serializable
data class UserDto(val user_name: String, val avatar_url: String?)

Why Not Use DTOs Directly

If your whole app uses DTOs, a tiny API change ripples everywhere. A domain model protects you from that.

The Domain Model

The domain model is shaped for your code: nice names, no nullable junk, exactly the fields the UI needs.

data class User(val name: String, val avatar: String)

Map in One Function

Write a small mapping function that turns a DTO into a domain model, all in one tidy, testable place.

fun UserDto.toDomain() = User(name = user_name, avatar = avatar_url ?: "")

Handle Nulls While Mapping

Mapping is the perfect spot to apply defaults, so missing or null JSON fields never crash the rest of the app.

Map Lists Too

For a list response, call map on the collection to convert every DTO into a domain item at once.

fun List<UserDto>.toDomain() = map { it.toDomain() }

Do It in the Repository

The repository fetches DTOs, then maps them to domain models, so callers only ever see the clean type.

override suspend fun getUsers() =
    client.get(url).body<List<UserDto>>().toDomain()

DTOs Stay Internal

Keep DTO classes internal to the data layer. Nothing outside the repository should ever import them.

Decoupled and Safe

Now the API can rename a field and you fix just the mapper, while the domain model and UI stay calm.

The Mapping Layer

This is the boundary in action: a DTO comes in, the mapper runs, and a clean domain model comes out.

val dto: UserDto = client.get(url).body()
val user: User = dto.toDomain()

Quick Check

Why map DTOs to separate domain models?

Recap

DTOs mirror raw JSON and stay in the data layer, while a mapping function turns them into clean domain models the rest of the app uses.

Часто задаваемые вопросы

Урок «Преобразование DTO в модели предметной области» бесплатный?

Да — полный текст урока «Преобразование DTO в модели предметной области» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Kotlin Multiplatform Academy, подпишись на CoddyKit PRO. Курс Kotlin Multiplatform Academy содержит 4 уроков всего.

Чему я научусь в уроке «Преобразование DTO в модели предметной области»?

Отделяйте сетевые структуры от типов предметной области Ты практикуешь Kotlin Multiplatform Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Kotlin Multiplatform Academy?

Предыдущий опыт не требуется. Kotlin Multiplatform Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.

Сколько времени занимает урок «Преобразование DTO в модели предметной области»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Kotlin Multiplatform Academy?

Да. Каждый урок Kotlin Multiplatform Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Определение интерфейса репозитория
  2. Обёртка API за репозиторием
  3. Преобразование DTO в модели предметной области
  4. Предоставление результатов как Flow
← Назад к Kotlin Multiplatform Academy