Ktor für Kotlin: Vollständiger Leitfaden mit Beispielen

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Was ist Ktor und wozu wird es benötigt?

\n\n

Ktor ist ein asynchrones Web-Framework, das in der Sprache Kotlin von der Firma JetBrains (den Entwicklern von IntelliJ IDEA und Kotlin selbst) geschrieben wurde. Es ist für die Erstellung von Serveranwendungen, HTTP-Clients und Microservices unter Verwendung der Leistungsfähigkeit von Kotlin-Koroutinen konzipiert. Ktor basiert vollständig auf Koroutinen, was es nicht-blockierend, leichtgewichtig und unglaublich leistungsstark macht.

\n\n

Warum Ktor verwenden? Erstens ist es ein natives Kotlin-Framework, das sich perfekt in die Sprachökosystem integriert. Zweitens ist Ktor modular: Sie binden nur die Komponenten ein, die Sie benötigen (Routing, Serialisierung, Authentifizierung, WebSockets usw.). Drittens unterstützt es Multiplattform: Derselbe Client-Code kann auf JVM, Android, iOS und JavaScript ausgeführt werden. Ktor eignet sich ideal für die Erstellung von REST-APIs, Microservices sowie für das Schreiben von HTTP-Clients, die auf jeder Plattform funktionieren.

\n\n

Installation von Ktor

\n\n

Ktor ist keine einzelne Bibliothek, sondern eine Sammlung von Gradle-Abhängigkeiten. Die Installation erfolgt über das Build-System Gradle (oder Maven). Erstellen Sie zunächst ein neues Kotlin-Projekt und fügen Sie die folgenden Abhängigkeiten in die Datei build.gradle.kts ein:

\n\n
// build.gradle.kts\nval ktorVersion = "2.3.12" // Aktuelle Version zum Zeitpunkt der Erstellung\n\nplugins {\n    kotlin("jvm") version "1.9.22"\n    application\n}\n\ndependencies {\n    // Ktor-Server\n    implementation("io.ktor:ktor-server-core:$ktorVersion")\n    implementation("io.ktor:ktor-server-netty:$ktorVersion") // Netty-Engine\n    implementation("io.ktor:ktor-server-content-negotiation:$ktorVersion") // Für JSON\n    implementation("io.ktor:ktor-serialization-kotlinx-json:$ktorVersion") // JSON-Serialisierung\n\n    // Ktor-Client (falls benötigt)\n    implementation("io.ktor:ktor-client-core:$ktorVersion")\n    implementation("io.ktor:ktor-client-cio:$ktorVersion") // CIO-Engine\n    implementation("io.ktor:ktor-client-content-negotiation:$ktorVersion")\n\n    // Logging\n    implementation("ch.qos.logback:logback-classic:1.4.14")\n}\n\napplication {\n    mainClass.set("ApplicationKt") // Einstiegspunkt\n}
\n\n

Führen Sie anschließend den Befehl ./gradlew build aus, um die Abhängigkeiten herunterzuladen. Wenn Sie Maven verwenden, finden Sie entsprechende Abhängigkeiten auf der offiziellen Ktor-Website. Für einen schnellen Start können Sie auch den Projektgenerator auf start.ktor.io verwenden.

\n\n

Schnellstart mit einem Codebeispiel

\n\n

Lassen Sie uns einen einfachen HTTP-Server erstellen, der auf eine GET-Anfrage an den Stammpfad mit "Hello, World!" antwortet.

\n\n
import io.ktor.server.application.*\nimport io.ktor.server.engine.*\nimport io.ktor.server.netty.*\nimport io.ktor.server.response.*\nimport io.ktor.server.routing.*\n\nfun main() {\n    embeddedServer(Netty, port = 8080) {\n        routing {\n            get("/") {\n                call.respondText("Hello, World!")\n            }\n        }\n    }.start(wait = true)\n}
\n\n

Starten Sie diesen Code. Öffnen Sie nun Ihren Browser und gehen Sie zu http://localhost:8080. Sie werden den Text "Hello, World!" sehen. Herzlichen Glückwunsch, Ihr erster Ktor-Server läuft!

\n\n

Wichtige Methoden und Funktionen von Ktor

\n\n

Nachfolgend sind 10 wichtige Methoden/Funktionen von Ktor aufgeführt, die Sie am häufigsten verwenden werden.

\n\n

1. embeddedServer

\n

Was es tut: Erstellt und startet einen eingebetteten HTTP-Server. Dies ist der Haupteinstiegspunkt für jede Ktor-Anwendung.

\n

Parameter:

\n
    \n
  • engine — Die Server-Engine (Netty, CIO, Jetty, Tomcat).
  • \n
  • port — Der Port, auf dem gehört werden soll (Standard: 80).
  • \n
  • host — Der Host (Standard: 0.0.0.0).
  • \n
  • module — Eine Lambda-Funktion, in der die Anwendung konfiguriert wird (Routen, Plugins).
  • \n
\n

Beispiel:

\n
embeddedS                    

Empfehlungen