Retrofit adalah library populer untuk melakukan komunikasi HTTP pada aplikasi Android. Jika dipadukan dengan Kotlin Coroutines, proses networking akan jauh lebih cepat, aman, dan mudah di-maintain tanpa callback hell.
1. Tambahkan Dependency Retrofit
implementation "com.squareup.retrofit2:retrofit:2.9.0"
implementation "com.squareup.retrofit2:converter-gson:2.9.0"
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3"
2. Membuat Model (Data Class)
// User.kt
data class User(
val id: Int,
val name: String,
val email: String
)
3. Membuat Interface API Service
// ApiService.kt
import retrofit2.http.GET
interface ApiService {
@GET("users")
suspend fun getUsers(): List<User>
}
4. Membuat Instance Retrofit
// ApiConfig.kt
import retrofit2.Retrofit
import retrofit2.converter.gson.GsonConverterFactory
object ApiConfig {
private const val BASE_URL = "https://your-api-url.com/"
val api: ApiService by lazy {
Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build()
.create(ApiService::class.java)
}
}
5. Menggunakan Repository
// UserRepository.kt
class UserRepository {
suspend fun getUsers(): List<User> {
return ApiConfig.api.getUsers()
}
}
6. Mengambil Data dari ViewModel
// UserViewModel.kt
import androidx.lifecycle.*
import kotlinx.coroutines.launch
class UserViewModel(
private val repo: UserRepository
) : ViewModel() {
private val _users = MutableLiveData<List<User>>()
val users: LiveData<List<User>> = _users
fun loadUsers() {
viewModelScope.launch {
_users.value = repo.getUsers()
}
}
}
7. Menampilkan Data di Activity / Fragment
// MainActivity.kt
viewModel.users.observe(this) { list ->
listView.adapter = UserAdapter(list)
}
viewModel.loadUsers()
8. Menangani Error dengan try/catch
try {
val result = repo.getUsers()
} catch (e: Exception) {
Log.e("API_ERROR", e.message.toString())
}
9. Best Practice Retrofit & Coroutines
- Gunakan sealed class / Resource untuk handle success & error.
- Letakkan baseURL di satu tempat (ApiConfig).
- Gunakan repository agar struktur bersih.
- Gunakan interceptor jika membutuhkan token authorization.
- Selalu gunakan coroutine Dispatchers.IO untuk operasi jaringan.
Dengan Retrofit dan Kotlin Coroutines, aplikasi Android Anda dapat mengambil data API dengan cepat, stabil, dan tanpa callback berantakan.