Comment écrire une API REST en Kotlin en 30 minutes : guide étape par étape

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

Introduction : Pourquoi Kotlin et l'API REST ?

\n

Le développement web moderne est impensable sans API REST. Si vous connaissez déjà Python et des frameworks comme Flask ou FastAPI, vous appréciez sûrement la simplicité et la rapidité de création d'applications serveur. Kotlin, en tant que langage moderne pour la JVM, offre une élégance et une concision tout aussi grandes, surtout en combinaison avec le framework Ktor.

\n

Dans cet article, nous allons créer en 30 minutes une API REST complète en Kotlin. Vous apprendrez à configurer le projet, créer des routes, traiter du JSON et lancer le serveur. Pas de blabla — que de la pratique.

\n

Si vous souhaitez élargir votre stack technologique ou simplement essayer Kotlin pour le développement backend, ce guide est pour vous.

\n\n

Étape 1 : Configuration du projet et des dépendances

\n

Pour commencer, nous avons besoin d'un projet Kotlin. Nous utiliserons l'outil de build Gradle (ou Maven — à votre choix). Le moyen le plus rapide est de créer un projet via Ktor Project Generator.

\n

Sélectionnez les options suivantes :

\n
    \n
  • Build System : Gradle Kotlin DSL
  • \n
  • Engine : Netty (ou un autre)
  • \n
  • Plugins : Content Negotiation (JSON), Routing, Status Pages
  • \n
\n

Après avoir téléchargé l'archive, décompressez-la et ouvrez-la dans IntelliJ IDEA ou un autre éditeur.

\n

Si vous créez le projet manuellement, ajoutez les dépendances suivantes dans build.gradle.kts :

\n
dependencies {\n    implementation("io.ktor:ktor-server-core:2.3.0")\n    implementation("io.ktor:ktor-server-netty:2.3.0")\n    implementation("io.ktor:ktor-server-content-negotiation:2.3.0")\n    implementation("io.ktor:ktor-serialization-kotlinx-json:2.3.0")\n    implementation("ch.qos.logback:logback-classic:1.4.11")\n}
\n

Créons maintenant le fichier Application.kt — le point d'entrée de l'application.

\n
import io.ktor.server.engine.*\nimport io.ktor.server.netty.*\nimport io.ktor.server.application.*\nimport io.ktor.server.plugins.contentnegotiation.*\nimport io.ktor.serialization.kotlinx.json.*\nimport kotlinx.serialization.json.Json\n\nfun main() {\n    embeddedServer(Netty, port = 8080, host = "0.0.0.0") {\n        configureSerialization()\n        configureRouting()\n    }.start(wait = true)\n}\n\nfun Application.configureSerialization() {\n    install(ContentNegotiation) {\n        json(Json {\n            prettyPrint = true\n            isLenient = true\n        })\n    }\n}
\n

Voilà ! Nous avons une configuration de base pour travailler avec JSON et un serveur sur le port 8080.

\n\n

Étape 2 : Création du modèle de données et du stockage

\n

Pour une API REST, nous avons besoin de données. Créons un modèle simple User (utilisateur) et un stockage temporaire en mémoire.

\n

D'abord, définissons une classe de données avec l'annotation @Serializable :

\n
import kotlinx.serialization.Serializable\n\n@Serializable\ndata class User(\n    val id: Int,\n    val name: String,\n    val email: String\n)
\n

Créons maintenant un objet repository qui stockera les utilisateurs :

\n
object UserRepository {\n    private val users = mutableListOf(\n        User(1, "Ivan Ivanov", "ivan@example.com"),\n        User(2, "Maria Petrova", "maria@example.com")\n    )\n\n    fun getAll(): List<User> = users.toList()\n\n    fun getById(id: Int): User? = users.find { it.id == id }\n\n    fun add(user: User): User {\n        users.add(user)\n        return user\n    }\n\n    fun delete(id: Int): Boolean = users.removeIf { it.id == id }\n}
\n

C'est une solution très simple, mais pour une démonstration en 30 minutes, elle est parfaite.

\n\n

Étape 3 : Configuration des routes (endpoints REST)

\n

Passons maintenant à la partie la plus intéressante — créons les endpoints pour les opérations CRUD. Ajoutons le fichier Routing.kt :

\n
import io.ktor.server.routing.*\nimport io.ktor.server.response.*\nimport io.ktor.server.request.*\n\nfun Application.configureRouting() {\n    routing {\n        route("/api/u                

Blogs

Book Recommendations