Qu'est-ce que Retrofit et pourquoi en a-t-on besoin ?
\n\nRetrofit est un client HTTP typé pour Java et Kotlin, développé par la société Square. C'est l'une des bibliothèques les plus populaires pour travailler avec les API REST dans l'écosystème Android. Retrofit permet aux développeurs d'effectuer facilement et élégamment des requêtes HTTP vers des serveurs distants, en convertissant automatiquement les réponses JSON en objets Kotlin et vice versa.
\n\nPourquoi utiliser Retrofit ?
\n- \n
- Simplification du travail avec les API : Au lieu d'écrire du code volumineux avec HttpURLConnection ou OkHttp, vous définissez une interface avec des annotations, et Retrofit génère lui-même l'implémentation. \n
- Sérialisation/Désérialisation automatique : Grâce à l'intégration avec des convertisseurs (Gson, Moshi, Kotlinx Serialization), Retrofit convertit automatiquement le JSON en objets Kotlin. \n
- Prise en charge de diverses méthodes HTTP : GET, POST, PUT, DELETE, PATCH, HEAD et OPTIONS. \n
- Gestion des en-têtes et des paramètres : Ajoutez facilement des en-têtes dynamiques ou statiques, des paramètres de requête et des paramètres de chemin. \n
- Asynchronisme : Prise en charge des coroutines Kotlin (fonctions suspend) et des interfaces Callback. \n
- Intégration avec OkHttp : Retrofit utilise OkHttp comme moteur HTTP, ce qui donne accès à de puissantes capacités d'interception de requêtes (interceptors). \n
Retrofit est idéal pour les applications Android qui interagissent avec des services web RESTful : des applications météo simples aux réseaux sociaux complexes.
\n\nInstallation de Retrofit dans un projet Kotlin
\n\nContrairement à Python (où pip est utilisé), dans les projets Kotlin/Android, les dépendances sont gérées via Gradle. Ajoutez les lignes suivantes dans le fichier build.gradle.kts (ou build.gradle) de votre module (généralement app) :
// build.gradle.kts (Module :app)\ndependencies {\n // Bibliothèque principale Retrofit\n implementation("com.squareup.retrofit2:retrofit:2.9.0")\n \n // Convertisseur pour travailler avec JSON (Gson)\n implementation("com.squareup.retrofit2:converter-gson:2.9.0")\n \n // Convertisseur alternatif (Moshi)\n // implementation("com.squareup.retrofit2:converter-moshi:2.9.0")\n \n // Pour la prise en charge des coroutines (fonctions suspend)\n implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3")\n \n // OkHttp (généralement déjà inclus, mais peut être ajouté explicitement)\n implementation("com.squareup.okhttp3:okhttp:4.12.0")\n implementation("com.squareup.okhttp3:logging-interceptor:4.12.0")\n}\n\n\nImportant : Après avoir ajouté les dépendances, cliquez sur "Sync Now" dans Android Studio pour télécharger les bibliothèques.
\n\nDémarrage rapide : exemple de code
\n\nCréons une application simple qui récupère une liste de publications depuis JSONPlaceholder (une API de test gratuite).
\n\nÉtape 1 : Créez une classe de données pour la réponse
\n\ndata class Post(\n val userId: Int,\n val id: Int,\n val title: String,\n val body: String\n)\n\n\nÉtape 2 : Définissez l'interface API
\n\ninterface 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Étape 3 : Créez le client Retrofit
\n\nobject 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Étape 4 : Utilisez dans une Activity ou ViewModel
\n\nclass MainActivity : AppCompatActivity() {\n override fun onCreate(savedInstanceState: Bundle?) {\n Aussi dans la bibliothèque
Surveillance des applications .NET avec Prometheus et OpenTelemetry
ORM pour C++ : comparaison et exemples d'utilisation des bibliothèques
Nodemailer — envoi d'email en TypeScript
Files d'attente de tâches en Java : ExecutorService et ThreadPoolExecutor
Traitement des images en PHP : redimensionnement, recadrage et optimisation avec GD et Imagick