0Pricing
Android Academy · Pelajaran

Retrofit & API REST

Buat permintaan HTTP dengan Retrofit. Definisikan interface API, uraikan JSON dengan Gson/Moshi, tangani respons dan error, lalu integrasikan dengan coroutine.

Retrofit & API REST adalah pelajaran Android Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 6. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Android Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Android Academy mencakup 6 pelajaran total.

Apa Itu Retrofit?

Retrofit adalah client HTTP paling populer untuk Android, yang dibuat oleh Square. Retrofit memungkinkan Anda mendefinisikan API REST sebagai antarmuka Kotlin—tanpa kode HTTP berulang.

  • Beri anotasi pada metode dengan @GET, @POST, dan sebagainya
  • Secara otomatis mengonversi respons JSON menjadi kelas data Kotlin
  • Dukungan korutin bawaan (suspend fun)

Menambahkan Dependensi

Tambahkan Retrofit dan konverter Gson ke app/build.gradle:

// app/build.gradle
dependencies {
    implementation 'com.squareup.retrofit2:retrofit:2.11.0'
    implementation 'com.squareup.retrofit2:converter-gson:2.11.0'
    implementation 'com.squareup.okhttp3:logging-interceptor:4.12.0'
}

// AndroidManifest.xml — add internet permission:
// <uses-permission android:name="android.permission.INTERNET" />

Mendefinisikan Antarmuka API

Buat antarmuka Kotlin yang menjelaskan titik akhir API Anda:

import retrofit2.http.*

data class Post(val id: Int, val title: String, val body: String, val userId: Int)

interface ApiService {

    @GET("posts")
    suspend fun getPosts(): List<Post>

    @GET("posts/{id}")
    suspend fun getPost(@Path("id") id: Int): Post

    @POST("posts")
    suspend fun createPost(@Body post: Post): Post

    @GET("posts")
    suspend fun getPostsByUser(@Query("userId") userId: Int): List<Post>
}

Membangun Instans Retrofit

Buat instans tunggal Retrofit—biasanya di dalam object atau melalui Hilt:

import retrofit2.Retrofit
import retrofit2.converter.gson.GsonConverterFactory

object RetrofitClient {
    private const val BASE_URL = "https://jsonplaceholder.typicode.com/"

    val api: ApiService by lazy {
        Retrofit.Builder()
            .baseUrl(BASE_URL)
            .addConverterFactory(GsonConverterFactory.create())
            .build()
            .create(ApiService::class.java)
    }
}

Membuat Permintaan GET

Panggil API dari Repositori menggunakan korutin Kotlin:

class PostRepository {
    private val api = RetrofitClient.api

    suspend fun getPosts(): List<Post> {
        return api.getPosts()  // Retrofit handles threading for you
    }

    suspend fun getPost(id: Int): Post {
        return api.getPost(id)
    }
}

// In ViewModel:
fun loadPosts() {
    viewModelScope.launch {
        try {
            val posts = withContext(Dispatchers.IO) {
                repository.getPosts()
            }
            _posts.value = posts
        } catch (e: Exception) {
            _error.value = "Network error: ${e.message}"
        }
    }
}

Pemetaan JSON dengan Gson

Gson mengonversi JSON menjadi kelas data Kotlin secara otomatis. Nama bidang harus sama dengan kunci JSON, atau gunakan @SerializedName:

import com.google.gson.annotations.SerializedName

data class User(
    val id: Int,
    val name: String,
    val email: String,
    @SerializedName("phone_number")  // JSON key is 'phone_number'
    val phoneNumber: String,
    @SerializedName("created_at")
    val createdAt: String
)

Permintaan POST dengan Body

Kirim data ke server menggunakan @POST dan @Body:

// API interface:
@POST("users")
suspend fun createUser(@Body user: User): User

// In Repository:
suspend fun createUser(name: String, email: String): User {
    val newUser = User(id = 0, name = name, email = email, phoneNumber = "", createdAt = "")
    return api.createUser(newUser)
}

// In ViewModel:
fun registerUser(name: String, email: String) {
    viewModelScope.launch {
        val user = withContext(Dispatchers.IO) {
            repo.createUser(name, email)
        }
        _registeredUser.value = user
    }
}

Header dan Autentikasi

Tambahkan header ke setiap permintaan menggunakan interseptor OkHttp:

import okhttp3.OkHttpClient
import okhttp3.Interceptor

val authClient = OkHttpClient.Builder()
    .addInterceptor { chain ->
        val request = chain.request().newBuilder()
            .addHeader("Authorization", "Bearer $token")
            .addHeader("Accept", "application/json")
            .build()
        chain.proceed(request)
    }
    .build()

val retrofit = Retrofit.Builder()
    .baseUrl(BASE_URL)
    .client(authClient)  // use our authenticated client
    .addConverterFactory(GsonConverterFactory.create())
    .build()

Penanganan Kesalahan HTTP

Respons HTTP yang berhasil (200-299) mengembalikan nilai. Respons kesalahan (4xx, 5xx) menghasilkan HttpException. Selalu tangani keduanya:

  • HttpException — server mengembalikan kode status kesalahan
  • IOException — tidak ada koneksi jaringan

Pemeriksaan Singkat

Anotasi Retrofit mana yang memetakan parameter metode ke segmen jalur URL seperti /posts/{id}?

Ringkasan: Retrofit & API

Sekarang Anda dapat mengambil data dari API REST apa pun:

  • Definisikan API dengan antarmuka Kotlin + anotasi (@GET, @POST, @Path, @Query)
  • Bangun instans Retrofit dengan URL dasar dan konverter Gson
  • Panggil fungsi suspend dari korutin dalam ViewModel
  • Petakan JSON → kelas data Kotlin secara otomatis
  • Tangani HttpException dan IOException

Berikutnya: tampilkan gambar dari jaringan dengan Coil.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Retrofit & API REST” gratis?

Ya — teks lengkap “Retrofit & API REST” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Android Academy, upgrade ke CoddyKit PRO. Kursus Android Academy mencakup 6 pelajaran total.

Apa yang akan aku pelajari di “Retrofit & API REST”?

Buat permintaan HTTP dengan Retrofit. Definisikan interface API, uraikan JSON dengan Gson/Moshi, tangani respons dan error, lalu integrasikan dengan coroutine. Kamu berlatih Android Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Android Academy?

Tidak diperlukan pengalaman sebelumnya. Android Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 6.

Berapa lama pelajaran “Retrofit & API REST” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Android Academy ini?

Ya. Setiap pelajaran Android Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Retrofit & API REST
  2. Memuat Gambar dengan Coil
  3. Penanganan Error & UX
  4. Notifikasi Push
  5. WorkManager & Tugas Latar Belakang
  6. Menerbitkan ke Play Store
← Kembali ke Android Academy