Wie man in 30 Minuten ein REST API mit Kotlin schreibt: Praxisbeispiel
Kotlin ist eine moderne Programmiersprache, die im Backend-Bereich rasant an Popularität gewinnt. Dank der prägnanten Syntax, der vollständigen Kompatibilität mit Java und leistungsstarken Tools wie dem Framework Ktor wird die Erstellung eines REST API zu einem schnellen und angenehmen Prozess. In diesem Artikel zeigen wir Ihnen in der Praxis, wie Sie in nur einer halben Stunde ein einfaches, aber vollwertiges REST API mit Kotlin schreiben. Sie erfahren, wie Sie das Projekt einrichten, Endpunkte erstellen, JSON verarbeiten und den Server starten.
Der Artikel richtet sich an Entwickler, die mit den Grundlagen von Kotlin vertraut sind, aber keine tiefgehenden Kenntnisse der Backend-Entwicklung erfordert. Der gesamte Code wird mit detaillierten Erklärungen begleitet.
1. Projekteinrichtung und Hinzufügen von Abhängigkeiten
Zunächst müssen wir ein neues Kotlin-Projekt erstellen. Wir verwenden Gradle – das beliebteste Build-System für Kotlin. Wenn Sie IntelliJ IDEA verwenden, wählen Sie „New Project“ -> „Kotlin“ -> „JVM | IDEA“. Andernfalls erstellen Sie manuell einen Projektordner.
Öffnen Sie als Erstes die Datei build.gradle.kts und fügen Sie die folgenden Abhängigkeiten für Ktor und JSON-Serialisierung hinzu:
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")}Nach der Gradle-Synchronisierung sind wir bereit, den Code zu schreiben. Beachten Sie, dass wir das Plugin kotlinx.serialization für die Arbeit mit JSON verwenden – dies ist der Standardweg in Kotlin.
2. Erstellung des Datenmodells und der Hauptserverdatei
Für das REST API benötigen wir ein Datenmodell. Nehmen wir eine einfache Aufgabenliste (ToDo). Erstellen Sie die Datei Todo.kt:
import kotlinx.serialization.Serializable
@Serializabledata class Todo( val id: Int, val title: String, val completed: Boolean = false)Erstellen wir nun die Hauptdatei Application.kt (oder Main.kt). Darin konfigurieren wir den Server und starten ihn:
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!") } }}Dieser Code startet den Server auf Port 8080. Wir haben das Modul ContentNegotiation für die automatische JSON-Serialisierung/Deserialisierung eingebunden. Starten Sie die Anwendung – Sie sollten unter http://localhost:8080 im Browser eine Begrüßungsnachricht sehen.
3. Implementierung von CRUD-Endpunkten (Create, Read, Update, Delete)
Fügen wir nun vollwertige REST-Routen zur Verwaltung von Aufgaben hinzu. Wir verwenden eine mutableListOf-Liste zur Speicherung der Daten im Arbeitsspeicher (in einem echten Projekt würden Sie diese durch eine Datenbank ersetzen).
Erstellen wir die Datei TodoRepository.kt:
import kotlinx.coroutines.sync.Muteximport kotlinx.coroutines.sync.withLock
class TodoRepositor