Einleitung
Kotlin ist eine moderne, prägnante und sichere Programmiersprache, die bei der Entwicklung von Serveranwendungen immer beliebter wird. Dank seiner Kompatibilität mit Java und leistungsstarken Frameworks wie Ktor können Sie im Handumdrehen eine vollwertige REST API erstellen. In diesem Artikel zeigen wir Ihnen, wie Sie mit Kotlin und dem Ktor-Framework eine REST API schreiben, auch wenn Sie Anfänger sind.
Wir werden eine einfache Anwendung zur Verwaltung einer Aufgabenliste (Todo API) mit Unterstützung für CRUD-Operationen erstellen: Erstellen, Lesen, Aktualisieren und Löschen. Der gesamte Vorgang dauert nicht länger als 30 Minuten, wenn Sie der Anleitung folgen.
1. Projektvorbereitung und Abhängigkeiten
Zunächst benötigen Sie IntelliJ IDEA (Community Edition) und Gradle. Wir erstellen ein neues Kotlin-Projekt mit Ktor-Unterstützung.
Schritt 1: Gradle-Projekt erstellen
Öffnen Sie IntelliJ IDEA und erstellen Sie ein neues Projekt: File → New → Project. Wählen Sie Gradle und geben Sie die Sprache Kotlin an. Klicken Sie auf Finish.
Schritt 2: Ktor-Abhängigkeiten hinzufügen
Öffnen Sie die Datei build.gradle.kts und fügen Sie die folgenden Abhängigkeiten hinzu:
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")}Klicken Sie oben rechts auf die Schaltfläche Sync Now, um die Abhängigkeiten herunterzuladen.
2. Datenmodell und Service erstellen
Bevor wir die Routen schreiben, definieren wir das Datenmodell für unsere Aufgabe und einen einfachen Service zur Speicherung der Daten im Arbeitsspeicher.
TodoItem-Modell
Erstellen Sie die Datei TodoItem.kt im Ordner src/main/kotlin:
import kotlinx.serialization.Serializable
@Serializabledata class TodoItem( val id: Int, val title: String, val completed: Boolean = false)TodoService
Erstellen Sie die Datei 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. Server und Routen konfigurieren
Jetzt erstellen wir die Hauptanwendungsdatei Application.kt und definieren die REST API-Routen.
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