Ответ
Обычно использую Retrofit + Kotlin Coroutines для сетевых запросов. Пример:
interface ApiService {
@GET("posts/{id}")
suspend fun getPost(@Path("id") postId: Int): Response<Post>
@POST("posts")
suspend fun createPost(@Body post: Post): Response<Post>
}
// Использование в ViewModel:
class PostViewModel : ViewModel() {
private val api = RetrofitClient.apiService
fun loadPost(id: Int) = viewModelScope.launch {
try {
val response = api.getPost(id)
if (response.isSuccessful) {
_post.value = response.body()
}
} catch (e: Exception) {
_error.value = e.message
}
}
}
Ключевые моменты:
- Suspend функции для корутин
- Обработка ошибок в try-catch
- Использование Response для доступа к статус-коду
- ViewModelScope для управления жизненным циклом
- Разделение на интерфейс API и реализацию