Comment écrire une API REST en Kotlin en 30 minutes : guide pas à pas

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
```html

Introduction

Kotlin est un langage de programmation moderne, concis et sûr qui gagne en popularité dans le développement d'applications serveur. Grâce à sa compatibilité avec Java et à des frameworks puissants comme Ktor, vous pouvez créer une API REST complète en seulement une demi-heure. Dans cet article, nous allons montrer comment écrire une API REST en Kotlin en utilisant le framework Ktor, même si vous êtes débutant.

Nous allons créer une application simple pour gérer une liste de tâches (Todo API) avec le support des opérations CRUD : création, lecture, mise à jour et suppression. L'ensemble du processus ne prendra pas plus de 30 minutes si vous suivez les instructions.

1. Préparation du projet et dépendances

Pour commencer, vous aurez besoin d'IntelliJ IDEA (Community Edition) et de Gradle. Créons un nouveau projet Kotlin avec le support de Ktor.

Étape 1 : Création d'un projet Gradle

Ouvrez IntelliJ IDEA et créez un nouveau projet : File → New → Project. Sélectionnez Gradle et indiquez le langage Kotlin. Cliquez sur Finish.

Étape 2 : Ajout des dépendances Ktor

Ouvrez le fichier build.gradle.kts et ajoutez les dépendances suivantes :

plugins {
    kotlin("jvm") version "1.9.0"
    application
}

repositories {
    mavenCentral()
}

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

application {
    mainClass.set("ApplicationKt")
}

Cliquez sur le bouton Sync Now dans le coin supérieur droit pour télécharger les dépendances.

2. Création du modèle de données et du service

Avant d'écrire les routes, définissons le modèle de données pour notre tâche et un service simple pour stocker les données en mémoire.

Modèle TodoItem

Créez le fichier TodoItem.kt dans le dossier src/main/kotlin :

import kotlinx.serialization.Serializable

@Serializable
data class TodoItem(
    val id: Int,
    val title: String,
    val completed: Boolean = false
)

Service TodoService

Créez le fichier TodoService.kt :

import java.util.concurrent.atomic.AtomicInteger

class TodoService {
    private val items = mutableListOf<TodoItem>()
    private val idCounter = AtomicInteger(1)

    fun getAll(): List<TodoItem> = items.toList()

    fun getById(id: Int): TodoItem? = items.find { it.id == id }

    fun create(title: String): TodoItem {
        val newItem = TodoItem(id = idCounter.getAndIncrement(), title = title)
        items.add(newItem)
        return newItem
    }

    fun update(id: Int, title: String?, completed: Boolean?): TodoItem? {
        val index = items.indexOfFirst { it.id == id }
        if (index == -1) return null
        val current = items[index]
        val updated = current.copy(
            title = title ?: current.title,
            completed = completed ?: current.completed
        )
        items[index] = updated
        return updated
    }

    fun delete(id: Int): Boolean = items.removeAll { it.id == id }
}

3. Configuration du serveur et des routes

Créons maintenant le fichier principal de l'application Application.kt et définissons les routes de l'API REST.

import io.ktor.server.application.*
import io.ktor.server.engine.*
import io.ktor.server.netty.*
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 
```                

Blogs

Book Recommendations