Ktor Client pour Kotlin : guide complet avec exemples concrets
Ktor Client est une bibliothèque puissante, légère et multiplateforme pour effectuer des requêtes HTTP en Kotlin. Développée par JetBrains, elle fait partie de l'écosystème Ktor et propose une API asynchrone basée sur les coroutines pour interagir avec les serveurs web. Contrairement à de nombreux autres clients HTTP, Ktor Client a été conçu dès le départ pour fonctionner sur plusieurs plateformes : JVM, Android, iOS, macOS, Linux, Windows et JavaScript (via Kotlin/JS). Cela en fait un choix idéal pour le développement d'applications multiplateformes avec Kotlin Multiplatform (KMP).
Pourquoi utiliser Ktor Client ? Dans le développement moderne, presque aucune application ne peut se passer d'interagir avec des API distantes. Qu'il s'agisse de charger des données depuis un service REST, d'envoyer des formulaires, de télécharger des fichiers ou de travailler avec des WebSockets, un client HTTP est un outil fondamental. Ktor Client ne se limite pas aux requêtes GET et POST basiques : il offre tout un écosystème de plugins (ou "moteurs") qui permettent de configurer la sérialisation (JSON, XML, Protobuf), la compression, la journalisation, l'authentification, les tentatives de reconnexion, et bien plus encore. Son principal avantage est son asynchronisme total basé sur les coroutines Kotlin, garantissant des performances élevées et un code concis sans callbacks.
La bibliothèque se distingue par son architecture modulaire. Vous n'importez que les composants réellement nécessaires à votre projet : le client de base, le moteur spécifique (par exemple, OkHttp pour Android/JVM ou Darwin pour iOS), le sérialiseur et les plugins requis. Cela minimise la taille finale de l'application et évite les conflits de dépendances. Ktor Client est activement développé, dispose d'une excellente documentation et bénéficie du soutien de la communauté Kotlin.
Installation
Ktor Client est distribué via le système de build Gradle (ou Maven). Comme il ne s'agit pas d'un package Python, la commande pip install n'est pas utilisée. Voici les instructions précises pour ajouter les dépendances à votre fichier build.gradle.kts.
Important : Les versions des bibliothèques doivent être compatibles. Il est recommandé d'utiliser la dernière version stable du dépôt officiel Maven Central. Au moment de la rédaction de cet article, la version actuelle est 2.3.12.
// build.gradle.kts (Gradle Kotlin DSL)
// 1. Ajoutez le dépôt (généralement déjà présent)
repositories {
mavenCentral()
}
// 2. Ajoutez les dépendances dans le bloc dependencies
dependencies {
// Client de base (obligatoire)
implementation("io.ktor:ktor-client-core:2.3.12")
// Moteur (Engine) - choisissez une option :
// Pour JVM (utilise Java HttpClient ou OkHttp)
implementation("io.ktor:ktor-client-okhttp:2.3.12") // Recommandé pour Android/JVM
// implementation("io.ktor:ktor-client-java:2.3.12") // Alternative pour JVM
// Pour iOS/macOS (Darwin natif)
// implementation("io.ktor:ktor-client-darwin:2.3.12")
// Pour JavaScript
// implementation("io.ktor:ktor-client-js:2.3.12")
// Pour Windows/Linux (Curl)
// implementation("io.ktor:ktor-client-curl:2.3.12")
// Plugins (optionnels mais très utiles) :
// Sérialisation JSON (Gson ou Kotlinx Serialization)
implementation("io.ktor:ktor-client-content-negotiation:2.3.12")
implementation("io.ktor:ktor-serialization-gson:2.3.12")
// ou implementation("io.ktor:ktor-serialization-kotlinx-json:2.3.12")
// Journalisation
implementation("io.ktor:ktor-client-logging:2.3.12")
// Pour les WebSockets
// implementation("io.ktor:ktor-client-websockets:2.3.12")
}
Si vous utilisez Maven, les dépendances seront similaires. Après avoir ajouté les dépendances, synchronisez votre projet (Sync Project with Gradle Files).
Démarrage rapide : exemple minimal fonctionnel
Écrivons un programme simple qui effectue une requête GET vers une API publique et affiche le résultat.
Aussi dans la bibliothèque
Parsing HTML en Rust : bibliothèques et exemples pratiques
Tests en TypeScript : Guide complet des frameworks et outils
Création d'outils CLI sur Node.js : aperçu des frameworks Commander, Yargs et Inquirer
Travailler avec CSV en C++ : bibliothèques, analyse et écriture de données
Envoi de SMS en Swift (iOS/macOS) : API MessageUI et services tiers