Retrofit für Kotlin: Vollständiger Leitfaden mit Beispielen

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Was ist Retrofit und warum wird es benötigt?

\n\n

Retrofit ist ein typsicherer HTTP-Client für Java und Kotlin, entwickelt von der Firma Square. Es ist eine der beliebtesten Bibliotheken für die Arbeit mit REST-APIs im Android-Ökosystem. Retrofit ermöglicht es Entwicklern, einfach und elegant HTTP-Anfragen an entfernte Server zu senden und JSON-Antworten automatisch in Kotlin-Objekte umzuwandeln und umgekehrt.

\n\n

Warum wird Retrofit benötigt?

\n
    \n
  • Vereinfachung der API-Arbeit: Anstatt umfangreichen Code mit HttpURLConnection oder OkHttp zu schreiben, definieren Sie ein Interface mit Annotationen, und Retrofit generiert automatisch die Implementierung.
  • \n
  • Automatische Serialisierung/Deserialisierung: Dank der Integration mit Konvertern (Gson, Moshi, Kotlinx Serialization) wandelt Retrofit JSON automatisch in Kotlin-Objekte um.
  • \n
  • Unterstützung verschiedener HTTP-Methoden: GET, POST, PUT, DELETE, PATCH, HEAD und OPTIONS.
  • \n
  • Verwaltung von Headern und Parametern: Einfaches Hinzufügen dynamischer oder statischer Header, Query-Parameter und Path-Parameter.
  • \n
  • Asynchronität: Unterstützung von Kotlin-Koroutinen (suspend-Funktionen) und Callback-Interfaces.
  • \n
  • Integration mit OkHttp: Retrofit verwendet OkHttp als HTTP-Engine, was Zugriff auf leistungsstarke Funktionen zum Abfangen von Anfragen (Interceptors) bietet.
  • \n
\n\n

Retrofit ist ideal für Android-Apps, die mit RESTful-Webdiensten interagieren: von einfachen Wetter-Apps bis hin zu komplexen sozialen Netzwerken.

\n\n

Installation von Retrofit in einem Kotlin-Projekt

\n\n

Im Gegensatz zu Python (wo pip verwendet wird) werden Abhängigkeiten in Kotlin/Android-Projekten über Gradle verwaltet. Fügen Sie die folgenden Zeilen in Ihre build.gradle.kts-Datei (oder build.gradle) Ihres Moduls (normalerweise app) ein:

\n\n
// build.gradle.kts (Module :app)\ndependencies {\n    // Hauptbibliothek Retrofit\n    implementation("com.squareup.retrofit2:retrofit:2.9.0")\n    \n    // Konverter für die Arbeit mit JSON (Gson)\n    implementation("com.squareup.retrofit2:converter-gson:2.9.0")\n    \n    // Alternativer Konverter (Moshi)\n    // implementation("com.squareup.retrofit2:converter-moshi:2.9.0")\n    \n    // Für Koroutinen-Unterstützung (suspend-Funktionen)\n    implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3")\n    \n    // OkHttp (normalerweise bereits enthalten, kann aber explizit hinzugefügt werden)\n    implementation("com.squareup.okhttp3:okhttp:4.12.0")\n    implementation("com.squareup.okhttp3:logging-interceptor:4.12.0")\n}\n
\n\n

Wichtig: Klicken Sie nach dem Hinzufügen der Abhängigkeiten in Android Studio auf "Sync Now", um die Bibliotheken herunterzuladen.

\n\n

Schnellstart: Codebeispiel

\n\n

Lassen Sie uns eine einfache App erstellen, die eine Liste von Beiträgen von JSONPlaceholder (kostenlose Test-API) abruft.

\n\n

Schritt 1: Erstellen Sie eine Data-Klasse für die Antwort

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

Schritt 2: Definieren Sie das API-Interface

\n\n
interface ApiService {\n    @GET("posts")\n    suspend fun getPosts(): List<Post>\n    \n    @GET("posts/{id}")\n    suspend fun getPostById(@Path("id") postId: Int): Post\n}\n
\n\n

Schritt 3: Erstellen Sie einen Retrofit-Client

\n\n
object RetrofitClient {\n    private const val BASE_URL = "https://jsonplaceholder.typicode.com/"\n    \n    val instance: ApiService by lazy {\n        Retrofit.Builder()\n            .baseUrl(BASE_URL)\n            .addConverterFactory(GsonConverterFactory.create())\n            .build()\n            .create(ApiService::class.java)\n    }\n}\n
\n\n

Schritt 4: Verwenden Sie es in Activity oder ViewModel

\n\n
class MainActivity : AppCompatActivity() {\n    override fun onCreate(savedInstanceState: Bundle?) {\n                    

Empfehlungen