0Pricing
Android Academy · Ders

Retrofit ve REST API'leri

Retrofit ile HTTP istekleri gönderin. API arayüzlerini tanımlayın, JSON verilerini Gson/Moshi ile ayrıştırın, yanıtları ve hataları yönetin, coroutine'lerle bütünleştirin.

Retrofit ve REST API'leri, CoddyKit'te ücretsiz bir Android Academy dersidir. Bu, 6 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Android Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Android Academy kursu toplamda 6 dersten oluşur.

Retrofit Nedir?

Retrofit, Square tarafından geliştirilen ve Android için en popüler HTTP istemcisidir. REST API'nizi Kotlin arayüzü olarak tanımlamanızı sağlar; HTTP için kalıp kod yazmanız gerekmez.

  • Yöntemleri @GET, @POST ve benzeri ek açıklamalarla belirtin
  • JSON yanıtlarını Kotlin veri sınıflarına otomatik olarak dönüştürür
  • Yerel coroutine desteği sunar (suspend fun)

Bağımlılıkları Ekleme

Retrofit ve Gson dönüştürücüsünü app/build.gradle dosyasına ekleyin:

// 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" />

API Arayüzünü Tanımlama

API uç noktalarınızı açıklayan bir Kotlin arayüzü oluşturun:

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>
}

Retrofit Örneğini Oluşturma

Tekil bir Retrofit örneği oluşturun; genellikle bir object içinde veya Hilt aracılığıyla oluşturulur:

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)
    }
}

GET İsteği Yapma

Kotlin coroutine'lerini kullanarak API'yi bir Repository'den çağırın:

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}"
        }
    }
}

Gson ile JSON Eşleme

Gson, JSON'ı Kotlin veri sınıflarına otomatik olarak dönüştürür. Alan adları JSON anahtarlarıyla eşleşmelidir; aksi durumda @SerializedName kullanın:

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
)

Gövde ile POST İsteği

@POST ve @Body kullanarak bir sunucuya veri gönderin:

// 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
    }
}

Üst Bilgiler ve Kimlik Doğrulama

Bir OkHttp interceptor kullanarak her isteğe üst bilgiler ekleyin:

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()

HTTP Hatalarını Yönetme

Başarılı bir HTTP yanıtı (200-299) bir değer döndürür. Hata yanıtları (4xx, 5xx) bir HttpException oluşturur. Her iki durumu da mutlaka yönetin:

  • HttpException — sunucu bir hata durum kodu döndürdü
  • IOException — ağ bağlantısı yok

Kısa Kontrol

/posts/{id} gibi bir URL yol bölümüne yöntem parametresini hangi Retrofit ek açıklaması eşler?

Özet: Retrofit ve API'ler

Artık herhangi bir REST API'den veri alabilirsiniz:

  • Bir Kotlin arayüzü ve ek açıklamalarla API'yi tanımlayın (@GET, @POST, @Path, @Query)
  • Temel URL ve Gson dönüştürücüsüyle bir Retrofit örneği oluşturun
  • ViewModel'daki bir coroutine içinden askıya alınabilir işlevleri çağırın
  • JSON → Kotlin veri sınıfları eşlemesini otomatik olarak yapın
  • HttpException ve IOException durumlarını yönetin

Sırada: Coil ile ağ görsellerini görüntüleme.

Sıkça Sorulan Sorular

“Retrofit ve REST API'leri” dersi ücretsiz mi?

Evet — “Retrofit ve REST API'leri” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Android Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Android Academy kursu toplamda 6 dersten oluşur.

“Retrofit ve REST API'leri” dersinde ne öğreneceğim?

Retrofit ile HTTP istekleri gönderin. API arayüzlerini tanımlayın, JSON verilerini Gson/Moshi ile ayrıştırın, yanıtları ve hataları yönetin, coroutine'lerle bütünleştirin. Android Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Android Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Android Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 6 dersinin 1. dersidir.

“Retrofit ve REST API'leri” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Android Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Android Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Retrofit ve REST API'leri
  2. Coil ile Görüntü Yükleme
  3. Hata Yönetimi ve Kullanıcı Deneyimi
  4. Anlık Bildirimler
  5. WorkManager ve Arka Plan Görevleri
  6. Play Store'da Yayınlama
← Android Academy Sayfasına Dön