0Pricing
Android Academy · Leçon

Retrofit et API REST

Effectuez des requêtes HTTP avec Retrofit. Définissez des interfaces d’API, analysez le JSON avec Gson/Moshi, gérez les réponses et les erreurs, puis intégrez le tout aux coroutines.

Retrofit et API REST est une leçon Android Academy gratuite sur CoddyKit. Ceci est la leçon 1 sur 6. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Android Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Android Academy comprend 6 leçons au total.

Qu'est-ce que Retrofit ?

Retrofit est le client HTTP le plus populaire pour Android, développé par Square. Il vous permet de définir votre API REST sous forme d'interface Kotlin, sans code HTTP répétitif.

  • Annotez les méthodes avec @GET, @POST, etc.
  • Convertit automatiquement les réponses JSON en classes de données Kotlin
  • Prend en charge nativement les coroutines (suspend fun)

Ajouter les dépendances

Ajoutez Retrofit et le convertisseur Gson à 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" />

Définir l'interface de l'API

Créez une interface Kotlin décrivant les points d'accès de votre API :

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

Construire l'instance Retrofit

Créez une instance Retrofit unique, généralement dans un object ou avec 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)
    }
}

Effectuer une requête GET

Appelez l'API depuis un Repository à l'aide des coroutines 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}"
        }
    }
}

Mappage JSON avec Gson

Gson convertit automatiquement le JSON en classes de données Kotlin. Les noms des champs doivent correspondre aux clés JSON ; sinon, utilisez @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
)

Requête POST avec un corps

Envoyez des données à un serveur avec @POST et @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
    }
}

En-têtes et authentification

Ajoutez des en-têtes à chaque requête à l'aide d'un intercepteur 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()

Gérer les erreurs HTTP

Une réponse HTTP réussie (200-299) renvoie une valeur. Les réponses d'erreur (4xx, 5xx) lèvent une HttpException. Gérez toujours les deux cas :

  • HttpException — le serveur a renvoyé un code d'état d'erreur
  • IOException — aucune connexion réseau

Vérification rapide

Quelle annotation Retrofit associe un paramètre de méthode à un segment de chemin d'URL comme /posts/{id} ?

Récapitulatif : Retrofit et les API

Vous pouvez maintenant récupérer des données depuis n'importe quelle API REST :

  • Définissez l'API avec une interface Kotlin et des annotations (@GET, @POST, @Path, @Query)
  • Construisez une instance Retrofit avec une URL de base et un convertisseur Gson
  • Appelez des fonctions suspendues depuis une coroutine dans le ViewModel
  • Convertissez automatiquement le JSON en classes de données Kotlin
  • Gérez HttpException et IOException

Ensuite : affichez des images réseau avec Coil.

Questions Fréquemment Posées

La leçon « Retrofit et API REST » est-elle gratuite ?

Oui — le texte complet de « Retrofit et API REST » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Android Academy, passe à CoddyKit PRO. Le cours Android Academy comprend 6 leçons au total.

Qu'est-ce que j'apprendrai dans « Retrofit et API REST » ?

Effectuez des requêtes HTTP avec Retrofit. Définissez des interfaces d’API, analysez le JSON avec Gson/Moshi, gérez les réponses et les erreurs, puis intégrez le tout aux coroutines. Tu pratiques Android Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Android Academy ?

Aucune expérience préalable n'est requise. Android Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 6.

Combien de temps prend la leçon « Retrofit et API REST » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Android Academy ?

Oui. Chaque leçon Android Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Retrofit et API REST
  2. Charger des images avec Coil
  3. Gestion des erreurs et expérience utilisateur
  4. Notifications push
  5. WorkManager et tâches en arrière-plan
  6. Publier sur le Play Store
← Retour à Android Academy