Лабораторія коду | Уроки програмного забезпечення
Підручники з програмного забезпечення => Kotlin => Тема розпоата: Ukzay від ер. 21, 2026, 11:02 AM
Retrofit в Kotlin є найпопулярнішою та найпотужнішою бібліотекою для взаємодії з REST API в проектах Android та загальних проектах Kotlin. Розроблений компанією Square, Retrofit дозволяє визначати HTTP-запити в типобезпечний, читабельний та стислий спосіб – особливо з інтеграцією Coroutines асинхронні виклики стають дуже чистими. Конвертери, такі як Gson або Moshi, автоматично перетворюють JSON на класи даних Kotlin. Станом на 2026 рік Retrofit все ще є стандартною бібліотекою мереж для Android: хоча він конкурує з клієнтом Ktor, декларативний API Retrofit, інтеграція з OkHttp та широка екосистема (інтерсептори, автентифікація) роблять його лідером. У поєднанні з Jetpack Compose створювати сучасні, реактивні додатки дуже легко.У Google пошуки "Kotlin Retrofit", "Retrofit Coroutines", "Retrofit Android tutorial", "Retrofit Gson" є одними з найбільш об'ємних тем щодо мереж Android в Україні та світі. Добре розуміти Retrofit необхідно для реальних застосунків (новинний додаток, електронна комерція, клієнт соціальних мереж) для споживання API – набагато ефективніше та з меншою кількістю помилок, ніж ручний HttpURLConnection або Volley.Чому варто вивчати Retrofit? (Перспектива 2026 року)- Типобезпечність: Визначте ендпоінти через інтерфейс, помилки виявляються під час компіляції.
- Підтримка Coroutines: Функції suspend для коду в стилі async/await – без callback hell.
- Стислість: Один рядок для виклику GET/POST/PUT/DELETE.
- Інтерсептори: Логування, автентифікація (Bearer token), кешування та інші спільні операції керуються централізовано.
- Потенціал мультиплатформи: Retrofit подібний до клієнта Ktor для спільних мереж, але в Android Retrofit все ще домінує.
- Популярне використання: Клієнти Android від Netflix, Twitter/X, Instagram використовують Retrofit.
ВстановленняУ проєкті Android Studio (ідеально для продовження проєкту з Compose):// build.gradle.kts (Module level):
implementation("com.squareup.retrofit2:retrofit:2.11.0") // Güncel sürüm 2026
implementation("com.squareup.retrofit2:converter-gson:2.11.0") // JSON için
implementation("com.squareup.okhttp3:logging-interceptor:4.12.0") // LoggingCoroutines вже є, додайте якщо потрібно.Основне використання Retrofit- Класи даних (для відповідей API):
data class Haber(
val title: String,
val description: String?,
val urlToImage: String?,
val publishedAt: String
)
data class HaberResponse(
val articles: List<Haber>
)interface HaberApi {
@GET("top-headlines")
suspend fun getBasliklar(
@Query("country") country: String = "tr",
@Query("apiKey") apiKey: String
): HaberResponse
}object RetrofitClient {
private val logging = HttpLoggingInterceptor().apply {
level = HttpLoggingInterceptor.Level.BODY
}
private val client = OkHttpClient.Builder()
.addInterceptor(logging)
.build()
val api: HaberApi = Retrofit.Builder()
.baseUrl("https://newsapi.org/v2/")
.addConverterFactory(GsonConverterFactory.create())
.client(client)
.build()
.create(HaberApi::class.java)
}- Приклад виклику (у ViewModel):
class HaberViewModel : ViewModel() {
private val _haberler = mutableStateListOf<Haber>()
val haberler: List<Haber> = _haberler
private val _yukleniyor = mutableStateOf(false)
val yukleniyor: State<Boolean> = _yukleniyor
fun haberleriYukle() {
viewModelScope.launch {
_yukleniyor.value = true
try {
val response = RetrofitClient.api.getBasliklar(apiKey = "YOUR_API_KEY")
_haberler.clear()
_haberler.addAll(response.articles)
} catch (e: Exception) {
// Керування помилками (лог або стан)
} finally {
_yukleniyor.value = false
}
}
}
}Простий Проєкт: Новинний Додаток (Compose + Retrofit + Coroutines)Повністю працюючий додаток зі списком заголовків новин – витягує дані з API та показує в LazyColumn (з зображеннями).- ViewModel (розширений як вище).
- Компонент екрану:
@Composable
fun HaberScreen(viewModel: HaberViewModel = viewModel()) {
LaunchedEffect(Unit) {
viewModel.haberleriYukle()
}
if (viewModel.yukleniyor) {
Box(modifier = Modifier.fillMaxSize(), contentAlignment = Alignment.Center) {
CircularProgressIndicator()
}
} else {
LazyColumn(modifier = Modifier.padding(16.dp)) {
items(viewModel.haberler) { haber ->
Card(modifier = Modifier.padding(8.dp).clickable {
// Відкрити URL (через Intent)
}) {
Column(modifier = Modifier.padding(16.dp)) {
AsyncImage( // Завантаження зображення через бібліотеку Coil
model = haber.urlToImage,
contentDescription = null,
modifier = Modifier.fillMaxWidth().height(200.dp),
contentScale = ContentScale.Crop
)
Text(haber.title, style = MaterialTheme.typography.h6)
Text(haber.description ?: "", style = MaterialTheme.typography.body1)
Text(haber.publishedAt, style = MaterialTheme.typography.body2)
}
}
}
}
}
}- Додаткові залежності (для Coil для завантаження зображень):
implementation("io.coil-kt:coil-compose:2.6.0")setContent {
MyAppTheme {
HaberScreen()
}
}Запуск: Отримайте безкоштовний API-ключ з newsapi.org, додайте до ViewModel. При відкритті додатка завантажуються поточні заголовки новин з Туреччини (з зображеннями) – при кліку можна відкрити в браузері (додатковий Intent).Пропозиції щодо розробки: Додайте пагінацію (@Query("page")), панель пошуку, стан помилок.Просунуті теми та поради- Автентифікація: Header-інтерсептор для Bearer token.
- POST/PUT: Надсилайте клас даних через @Body.
- Обробка помилок: Обгортка Response<T> або кастомний адаптер виклику.
- Альтернатива Moshi: Швидший розбір JSON.
- Ktor Client: Віддавайте перевагу для мультиплатформи.
- Тестування: Unit-тести з MockWebServer.
Висновок та практичні пропозиціїRetrofit + Coroutines є золотим стандартом мереж Android – з цим посібником та проєктом новинного додатка ви зможете створити реальний додаток, що споживає API. Для практики:- Оберіть власний API (GitHub API, OpenWeather) та створіть подібний додаток.
- Додайте бекенд до вашого Todo-додатка (з попереднього посібника) (Firebase або mock API).
- Додайте пагінацію та кеш (через Room).
- Ресурси: Документація Square Retrofit, офіційний посібник Android з мереж, навчальні матеріали "Android Networking with Retrofit".
З цим посібником ви почнете використовувати Retrofit на професійному рівні. Розробіть власний новинний додаток або залиште коментар для іншого проєкту API! У 2026 році Retrofit надасть вашим додаткам Android велику швидкість та надійність.