Определение интерфейса репозитория
Предоставляйте потребности в данных, не раскрывая детали HTTP
«Определение интерфейса репозитория» — бесплатный урок Kotlin Multiplatform Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Kotlin Multiplatform Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Kotlin Multiplatform Academy содержит 4 уроков всего.
Части этого урока еще не переведены и отображаются на английском.
What a Repository Is
A repository is the single doorway your apps walk through to get data, hiding where that data actually comes from.
Start With an Interface
Define the repository as a Kotlin interface first, so callers depend on a contract instead of a concrete class.
interface UserRepository {
suspend fun getUser(id: String): User
}Speak in Domain Terms
Name methods after what the app needs, like getUser, not after how you fetch it. The intent stays clear and stable.
Return Domain Models
The interface returns clean domain models, never raw JSON or HTTP responses, so the UI stays simple.
suspend fun getUsers(): List<User>No HTTP Words Allowed
Keep words like Ktor, headers, and status codes out of the interface. Callers should never know HTTP exists.
Suspend for Async Work
Mark data methods as suspend so they can do async work without blocking, and fit naturally into coroutines on both apps.
suspend fun refresh()It Lives in commonMain
Put the interface in commonMain so Android and iOS share the exact same data contract with zero duplication.
Many Implementations Possible
One interface can have several implementations: a real network one and a fake one for tests, swapped freely.
Easier to Test
Because callers depend on the interface, you can inject a fake repository in tests and avoid hitting the real network.
class FakeUserRepository : UserRepositoryClear, Focused Methods
Keep each method small and purposeful. A focused API is easier to read, mock, and evolve over time.
A Complete Example
Here is a tidy repository contract that exposes everything the user feature needs and nothing more.
interface UserRepository {
suspend fun getUsers(): List<User>
suspend fun getUser(id: String): User
}Quick Check
Where should the repository interface live in a KMP project?
Recap
A repository interface in commonMain defines what data the app needs using suspend methods and domain models, hiding all HTTP details.
Часто задаваемые вопросы
Урок «Определение интерфейса репозитория» бесплатный?
Да — полный текст урока «Определение интерфейса репозитория» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Kotlin Multiplatform Academy, подпишись на CoddyKit PRO. Курс Kotlin Multiplatform Academy содержит 4 уроков всего.
Чему я научусь в уроке «Определение интерфейса репозитория»?
Предоставляйте потребности в данных, не раскрывая детали HTTP Ты практикуешь Kotlin Multiplatform Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Kotlin Multiplatform Academy?
Предыдущий опыт не требуется. Kotlin Multiplatform Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Определение интерфейса репозитория»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Kotlin Multiplatform Academy?
Да. Каждый урок Kotlin Multiplatform Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Определение интерфейса репозитория
- Обёртка API за репозиторием
- Преобразование DTO в модели предметной области
- Предоставление результатов как Flow