Comment écrire une API REST en Kotlin en 30 minutes : en pratique
Kotlin est un langage de programmation moderne qui gagne rapidement en popularité dans le développement backend. Grâce à sa syntaxe concise, sa compatibilité totale avec Java et des outils puissants comme le framework Ktor, la création d'une API REST devient un processus rapide et agréable. Dans cet article, nous allons montrer en pratique comment écrire une API REST simple mais complète en Kotlin en seulement une demi-heure. Vous apprendrez à configurer le projet, créer des endpoints, traiter le JSON et lancer le serveur.
Cet article est destiné aux développeurs familiers avec les bases de Kotlin, mais ne nécessite pas de connaissances approfondies en développement backend. Tout le code sera accompagné d'explications détaillées.
1. Configuration du projet et ajout des dépendances
Pour commencer, nous devons créer un nouveau projet Kotlin. Nous utiliserons Gradle — le système de build le plus populaire pour Kotlin. Si vous utilisez IntelliJ IDEA, sélectionnez « New Project » -> « Kotlin » -> « JVM | IDEA ». Sinon, créez un dossier de projet manuellement.
Commencez par ouvrir le fichier build.gradle.kts et ajoutez les dépendances suivantes pour Ktor et la sérialisation JSON :
plugins { kotlin("jvm") version "1.9.22" kotlin("plugin.serialization") version "1.9.22" application}
repositories { mavenCentral()}
dependencies { implementation("io.ktor:ktor-server-core:2.3.7") implementation("io.ktor:ktor-server-netty:2.3.7") implementation("io.ktor:ktor-server-content-negotiation:2.3.7") implementation("io.ktor:ktor-serialization-kotlinx-json:2.3.7") implementation("ch.qos.logback:logback-classic:1.4.14")}
application { mainClass.set("ApplicationKt")}Après la synchronisation de Gradle, nous sommes prêts à écrire le code. Notez que nous utilisons le plugin kotlinx.serialization pour travailler avec JSON — c'est la méthode standard en Kotlin.
2. Création du modèle de données et du fichier principal du serveur
Pour une API REST, nous avons besoin d'un modèle de données. Prenons une simple liste de tâches (ToDo). Créez le fichier Todo.kt :
import kotlinx.serialization.Serializable
@Serializabledata class Todo( val id: Int, val title: String, val completed: Boolean = false)Créons maintenant le fichier principal Application.kt (ou Main.kt). Nous y configurerons le serveur et le lancerons :
import io.ktor.server.engine.*import io.ktor.server.netty.*import io.ktor.server.application.*import io.ktor.server.routing.*import io.ktor.server.response.*import io.ktor.server.request.*import io.ktor.serialization.kotlinx.json.*import io.ktor.server.plugins.contentnegotiation.*
fun main() { embeddedServer(Netty, port = 8080, host = "0.0.0.0") { configureSerialization() configureRouting() }.start(wait = true)}
fun Application.configureSerialization() { install(ContentNegotiation) { json() }}
fun Application.configureRouting() { routing { get("/") { call.respondText("Hello, REST API on Kotlin!") } }}Ce code lance le serveur sur le port 8080. Nous avons connecté le module ContentNegotiation pour la sérialisation/désérialisation automatique du JSON. Lancez l'application — vous devriez voir dans le navigateur à l'adresse http://localhost:8080 un message de bienvenue.
3. Implémentation des endpoints CRUD (Create, Read, Update, Delete)
Ajoutons maintenant des routes REST complètes pour gérer les tâches. Nous utiliserons une liste mutableListOf pour stocker les données en mémoire (dans un projet réel, vous la remplacerez par une base de données).
Créons le fichier TodoRepository.kt :
import kotlinx.coroutines.sync.Muteximport kotlinx.coroutines.sync.withLock
class TodoRepositor