Menghubungkan Android dengan API

Dipublikasikan: 12 Januari 2025 • Kategori: Android • Penulis: Jumanto

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

Dengan Retrofit dan Kotlin Coroutines, aplikasi Android Anda dapat mengambil data API dengan cepat, stabil, dan tanpa callback berantakan.

← Kembali ke Blog