Mappa DTO:er till domänmodeller
Separera nätverksformat från era domäntyper
Mappa DTO:er till domänmodeller är en gratis lektion i Kotlin Multiplatform Academy på CoddyKit. Detta är lektion 3 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Kotlin Multiplatform Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Kotlin Multiplatform Academy innehåller totalt 4 lektioner.
Två sorters modeller
Appen har faktiskt två dataformer: den råa DTO:n från API:et och den rena domänmodell som koden behöver.
Vad är en DTO?
En DTO, eller dataöverföringsobjekt, speglar JSON exakt, även när fältnamnen är röriga eller opraktiska.
@Serializable
data class UserDto(val user_name: String, val avatar_url: String?)Varför inte använda DTO:er direkt?
Om hela appen använder DTO:er sprider sig även en liten API-förändring överallt. En domänmodell skyddar Er från det.
Domänmodellen
Domänmodellen är utformad för Er kod: bra namn, inga onödiga nullable-värden och exakt de fält som användargränssnittet behöver.
data class User(val name: String, val avatar: String)Mappa i en funktion
Skriv en liten mappningsfunktion som omvandlar en DTO till en domänmodell, på en enda tydlig och testbar plats.
fun UserDto.toDomain() = User(name = user_name, avatar = avatar_url ?: "")Hantera null vid mappning
Mappning är den perfekta platsen för att tillämpa standardvärden, så att saknade eller null-värden i JSON aldrig kraschar resten av appen.
Mappa även listor
För ett listresultat anropar Ni map på samlingen för att omvandla varje DTO till ett domänobjekt på en gång.
fun List<UserDto>.toDomain() = map { it.toDomain() }Gör det i repositoryt
Repositoryt hämtar DTO:er och mappar dem sedan till domänmodeller, så att anroparna bara ser den rena typen.
override suspend fun getUsers() =
client.get(url).body<List<UserDto>>().toDomain()DTO:er stannar internt
Håll DTO-klasserna interna i datalagret. Ingenting utanför repositoryt ska någonsin importera dem.
Frikopplad och säker
Nu kan API:et byta namn på ett fält och Ni behöver bara ändra mappern, medan domänmodellen och användargränssnittet förblir opåverkade.
Mappningslagret
Här ser Ni gränsen i praktiken: en DTO kommer in, mappern körs och en ren domänmodell kommer ut.
val dto: UserDto = client.get(url).body()
val user: User = dto.toDomain()Snabb kontroll
Varför mappar man DTO:er till separata domänmodeller?
Sammanfattning
DTO:er speglar rå JSON och stannar i datalagret, medan en mappningsfunktion omvandlar dem till rena domänmodeller som resten av appen använder.
Lär dig Kotlin med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 30
- Lektioner
- 120
Vanliga frågor
Är lektionen ”Mappa DTO:er till domänmodeller” gratis?
Ja – hela texten till ”Mappa DTO:er till domänmodeller” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Kotlin Multiplatform Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i Kotlin Multiplatform Academy innehåller totalt 4 lektioner.
Vad lär jag mig i ”Mappa DTO:er till domänmodeller”?
Separera nätverksformat från era domäntyper Ni övar på Kotlin Multiplatform Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Kotlin Multiplatform Academy?
Du behöver inga förkunskaper. Utbildningen i Kotlin Multiplatform Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 3 av 4.
Hur lång tid tar lektionen ”Mappa DTO:er till domänmodeller”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Kotlin Multiplatform Academy-lektionen?
Ja. Varje Kotlin Multiplatform Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Definiera ett Repository-gränssnitt
- Lägg API:t bakom repositoryt
- Mappa DTO:er till domänmodeller
- Exponera resultat som Flow