Kotlin Multiplatform Academy · Oppitunti

DTO:iden yhdistäminen toimialuemalleihin

Erota verkkodatan rakenteet toimialuetyypeistäsi

Oppitunti 3/413 vaihetta

DTO:iden yhdistäminen toimialuemalleihin on ilmainen Kotlin Multiplatform Academy-oppitunti CoddyKitissä. Tämä on oppitunti 3/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Kotlin Multiplatform Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Kotlin Multiplatform Academy-kurssilla on yhteensä 4 oppituntia.

Kahdenlaisia malleja

Sovelluksessanne on todellisuudessa kaksi datamuotoa: API:n palauttama raaka DTO ja koodinne tarvitsema selkeä domain-malli.

Mikä DTO on

DTO eli data transfer object vastaa JSON:ia täsmällisesti, vaikka kenttien nimet olisivat sekavia tai hankalia.

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

Miksi DTO:ita ei käytetä suoraan

Jos koko sovelluksenne käyttää DTO:ita, pienikin API change -muutos leviää kaikkialle. Domain-malli suojaa teitä tältä.

Domain-malli

domain model on muotoiltu koodianne varten: selkeät nimet, ei turhia nullable-arvoja ja täsmälleen ne kentät, joita käyttöliittymä tarvitsee.

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

Kartoittakaa yhdessä funktiossa

Kirjoittakaa pieni mapping-funktio, joka muuntaa DTO:n domain-malliksi yhdessä siistissä ja testattavassa paikassa.

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

Käsitelkää null-arvot kartoituksen aikana

Mapping on täydellinen paikka käyttää defaults-arvoja, jotta puuttuvat tai null-arvoiset JSON-kentät eivät kaada muuta sovellusta.

Kartoittakaa myös listat

Listavastauksessa kutsukaa map-funktiota kokoelmalle, jotta jokainen DTO muunnetaan kerralla domain-alkioksi.

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

Tehkää se repositoryssä

Repository hakee DTO:t ja muuntaa ne sitten domain-malleiksi, joten kutsujat näkevät aina vain clean-tyypin.

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

DTO:t pysyvät sisäisinä

Pitäkää DTO-luokat datakerroksen internal-luokkina. Mikään repositoryn ulkopuolella ei saa tuoda niitä käyttöön.

Irrotettu ja turvallinen

Nyt API voi nimetä kentän uudelleen, ja korjaatte vain mapper-muuntimen, kun taas domain-malli ja käyttöliittymä pysyvät ennallaan.

Mapping-kerros

Tässä raja toimii käytännössä: DTO tulee sisään, mapper suoritetaan ja selkeä domain-malli tulee ulos.

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

Pikatarkistus

Miksi DTO:t kartoitetaan erillisiksi domain-malleiksi?

Kertaus

DTO:t vastaavat raakaa JSON-dataa ja pysyvät datakerroksessa, kun taas mapping-funktio muuntaa ne selkeiksi domain-malleiksi, joita muu sovellus käyttää.

Aloita maksutta

Opi Kotlin tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
30
Oppitunnit
120

Usein kysytyt kysymykset

Onko oppitunti ”DTO:iden yhdistäminen toimialuemalleihin” ilmainen?

Kyllä – oppitunnin ”DTO:iden yhdistäminen toimialuemalleihin” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Kotlin Multiplatform Academy-kurssin, päivitä CoddyKit PROhon. Kotlin Multiplatform Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”DTO:iden yhdistäminen toimialuemalleihin”?

Erota verkkodatan rakenteet toimialuetyypeistäsi Harjoittelet Kotlin Multiplatform Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Kotlin Multiplatform Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Kotlin Multiplatform Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/4.

Kuinka kauan ”DTO:iden yhdistäminen toimialuemalleihin”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Kotlin Multiplatform Academy-oppitunnilla?

Kyllä. Jokainen Kotlin Multiplatform Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Määritä Repository-rajapinta
  2. Kääri API Repositoryn taakse
  3. DTO:iden yhdistäminen toimialuemalleihin
  4. Aseta tulokset saataville Flow-virtana
← Takaisin: Kotlin Multiplatform Academy