Fetching Data dengan Retrofit
Penjelasan
Retrofit adalah library HTTP client paling populer di ekosistem Android — endpoint API didefinisikan sebagai interface dengan annotation (@GET, @POST), Retrofit otomatis men-generate implementasinya. Dikombinasikan dengan suspend fun (coroutine Kotlin) dan dipanggil dari ViewModel lewat viewModelScope.
Contoh Konsep
interface ApiService {
@GET("produk")
suspend fun ambilProduk(): List<ProdukDto>
}
class ProdukViewModel(private val api: ApiService) : ViewModel() {
private val _produk = MutableStateFlow<List<ProdukDto>>(emptyList())
val produk: StateFlow<List<ProdukDto>> = _produk
fun ambilProduk() {
viewModelScope.launch {
_produk.value = api.ambilProduk()
}
}
}
Praktikum
Buat interface ApiService dengan suspend fun ambilArtikel(): List<ArtikelDto> ditandai @GET("artikel"). Buat ArtikelViewModel yang memanggilnya lewat viewModelScope.launch, hasilnya disimpan ke MutableStateFlow.
Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.
Tips
viewModelScope.launch { } penting dipakai (bukan GlobalScope atau coroutine scope lain) karena coroutine yang dijalankan di dalamnya OTOMATIS DIBATALKAN saat ViewModel-nya dihancurkan (mis. user keluar dari layar) — mencegah kebocoran coroutine yang terus jalan padahal UI-nya sudah tidak ada.