DTO:iden yhdistäminen toimialuemalleihin
Erota verkkodatan rakenteet toimialuetyypeistäsi
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ää.
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
- Määritä Repository-rajapinta
- Kääri API Repositoryn taakse
- DTO:iden yhdistäminen toimialuemalleihin
- Aseta tulokset saataville Flow-virtana