Ktor pour Kotlin : guide complet avec exemples

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Qu'est-ce que Ktor et pourquoi en a-t-on besoin ?

\n\n

Ktor est un framework web asynchrone écrit en langage Kotlin par la société JetBrains (créateurs d'IntelliJ IDEA et de Kotlin lui-même). Il est conçu pour créer des applications serveur, des clients HTTP et des microservices en utilisant la puissance des coroutines Kotlin. Ktor est entièrement construit sur les coroutines, ce qui le rend non-bloquant, léger et incroyablement performant.

\n\n

Pourquoi utiliser Ktor ? Premièrement, c'est un framework Kotlin natif qui s'intègre parfaitement à l'écosystème du langage. Deuxièmement, Ktor est modulaire : vous ne connectez que les composants dont vous avez besoin (routage, sérialisation, authentification, WebSockets, etc.). Troisièmement, il supporte la multiplateforme : le même code client peut fonctionner sur JVM, Android, iOS et JavaScript. Ktor est idéal pour créer des API REST, des microservices, ainsi que pour écrire des clients HTTP pouvant fonctionner sur n'importe quelle plateforme.

\n\n

Installation de Ktor

\n\n

Ktor n'est pas une seule bibliothèque, mais un ensemble de dépendances Gradle. L'installation se fait via le système de construction Gradle (ou Maven). Pour commencer, créez un nouveau projet Kotlin et ajoutez les dépendances suivantes dans le fichier build.gradle.kts :

\n\n
// build.gradle.kts\nval ktorVersion = "2.3.12" // Version actuelle au moment de la rédaction\n\nplugins {\n    kotlin("jvm") version "1.9.22"\n    application\n}\n\ndependencies {\n    // Serveur Ktor\n    implementation("io.ktor:ktor-server-core:$ktorVersion")\n    implementation("io.ktor:ktor-server-netty:$ktorVersion") // Moteur Netty\n    implementation("io.ktor:ktor-server-content-negotiation:$ktorVersion") // Pour JSON\n    implementation("io.ktor:ktor-serialization-kotlinx-json:$ktorVersion") // Sérialisation JSON\n\n    // Client Ktor (si nécessaire)\n    implementation("io.ktor:ktor-client-core:$ktorVersion")\n    implementation("io.ktor:ktor-client-cio:$ktorVersion") // Moteur CIO\n    implementation("io.ktor:ktor-client-content-negotiation:$ktorVersion")\n\n    // Journalisation\n    implementation("ch.qos.logback:logback-classic:1.4.14")\n}\n\napplication {\n    mainClass.set("ApplicationKt") // Point d'entrée\n}
\n\n

Ensuite, exécutez la commande ./gradlew build pour télécharger les dépendances. Si vous utilisez Maven, des dépendances similaires peuvent être trouvées sur le site officiel de Ktor. Pour un démarrage rapide, vous pouvez également utiliser le générateur de projets sur start.ktor.io.

\n\n

Démarrage rapide avec un exemple de code

\n\n

Créons un serveur HTTP simple qui répond "Hello, World!" à une requête GET sur le chemin racine.

\n\n
import io.ktor.server.application.*\nimport io.ktor.server.engine.*\nimport io.ktor.server.netty.*\nimport io.ktor.server.response.*\nimport io.ktor.server.routing.*\n\nfun main() {\n    embeddedServer(Netty, port = 8080) {\n        routing {\n            get("/") {\n                call.respondText("Hello, World!")\n            }\n        }\n    }.start(wait = true)\n}
\n\n

Exécutez ce code. Ouvrez maintenant votre navigateur et allez à l'adresse http://localhost:8080. Vous verrez le texte "Hello, World!". Félicitations, votre premier serveur Ktor est lancé !

\n\n

Méthodes et fonctions principales de Ktor

\n\n

Voici 10 méthodes/fonctions clés de Ktor que vous utiliserez le plus souvent.

\n\n

1. embeddedServer

\n

Ce qu'elle fait : Crée et démarre un serveur HTTP intégré. C'est le point d'entrée principal pour toute application Ktor.

\n

Paramètres :

\n
    \n
  • engine — le moteur du serveur (Netty, CIO, Jetty, Tomcat).
  • \n
  • port — le port d'écoute (par défaut 80).
  • \n
  • host — l'hôte (par défaut 0.0.0.0).
  • \n
  • module — une fonction lambda dans laquelle l'application est configurée (routes, plugins).
  • \n
\n

Exemple :

\n
embeddedS                    

Recommendations