Retrofit und REST-APIs
Stellen Sie HTTP-Anfragen mit Retrofit. Definieren Sie API-Schnittstellen, analysieren Sie JSON mit Gson/Moshi, behandeln Sie Antworten und Fehler und integrieren Sie Coroutines.
Retrofit und REST-APIs ist eine kostenlose Android Academy-Lektion auf CoddyKit. Dies ist Lektion 1 von 6. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Android Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Android Academy-Kurs umfasst insgesamt 6 Lektionen.
Was ist Retrofit?
Retrofit ist der beliebteste HTTP-Client für Android und wurde von Square entwickelt. Damit können Sie Ihre REST-API als Kotlin-Interface definieren – ganz ohne umfangreichen HTTP-Boilerplate-Code.
- Annotieren Sie Methoden mit
@GET,@POSTusw. - Konvertiert JSON-Antworten automatisch in Kotlin-Datenklassen
- Native Coroutine-Unterstützung (
suspend fun)
Abhängigkeiten hinzufügen
Fügen Sie Retrofit und den Gson-Konverter zu app/build.gradle hinzu:
// 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-Interface definieren
Erstellen Sie ein Kotlin-Interface, das Ihre API-Endpunkte beschreibt:
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-Instanz erstellen
Erstellen Sie eine Singleton-Retrofit-Instanz – üblicherweise in einem object oder über 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)
}
}GET-Anfrage ausführen
Rufen Sie die API aus einem Repository mithilfe von Kotlin-Coroutines auf:
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-JSON-Zuordnung
Gson konvertiert JSON automatisch in Kotlin-Datenklassen. Feldnamen müssen mit den JSON-Schlüsseln übereinstimmen. Alternativ können Sie @SerializedName verwenden:
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
)POST-Anfrage mit Body
Senden Sie Daten mit @POST und @Body an einen Server:
// 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 & Authentifizierung
Fügen Sie jeder Anfrage mithilfe eines OkHttp-Interceptors Header hinzu:
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-Fehler behandeln
Eine erfolgreiche HTTP-Antwort (200–299) liefert einen Wert zurück. Fehlerantworten (4xx, 5xx) lösen eine HttpException aus. Behandeln Sie immer beide Fälle:
HttpException— der Server hat einen Fehlerstatuscode zurückgegebenIOException— keine Netzwerkverbindung
Schnelltest
Welche Retrofit-Annotation ordnet einen Methodenparameter einem URL-Pfadsegment wie /posts/{id} zu?
Zusammenfassung: Retrofit & APIs
Sie können jetzt Daten aus jeder REST-API abrufen:
- API mit einem Kotlin-Interface und Annotationen definieren (@GET, @POST, @Path, @Query)
- Eine Retrofit-Instanz mit Basis-URL und Gson-Konverter erstellen
- Suspend-Funktionen in einer Coroutine im ViewModel aufrufen
- JSON automatisch Kotlin-Datenklassen zuordnen
HttpExceptionundIOExceptionbehandeln
Als Nächstes: Netzwerkladebilder mit Coil anzeigen.
Häufig gestellte Fragen
Ist die Lektion „Retrofit und REST-APIs“ kostenlos?
Ja — der vollständige Text von „Retrofit und REST-APIs“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Android Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Android Academy-Kurs umfasst insgesamt 6 Lektionen.
Was lerne ich in „Retrofit und REST-APIs“?
Stellen Sie HTTP-Anfragen mit Retrofit. Definieren Sie API-Schnittstellen, analysieren Sie JSON mit Gson/Moshi, behandeln Sie Antworten und Fehler und integrieren Sie Coroutines. Du übst Android Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Android Academy zu starten?
Keine Vorkenntnisse erforderlich. Android Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 6.
Wie lange dauert die Lektion „Retrofit und REST-APIs“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Android Academy-Lektion Code schreiben und ausführen?
Ja. Jede Android Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Retrofit und REST-APIs
- Bilder mit Coil laden
- Fehlerbehandlung und UX
- Push-Benachrichtigungen
- WorkManager und Hintergrundaufgaben
- Veröffentlichen im Play Store