Študijné materiály

Ktor môžeme používať aj ako server. Vytvoríme si jednoduchý HTTP server, ktorý bude odpovedať na požiadavky.

18.1.1 Nastavenie

V build.gradle.kts:

plugins {
    kotlin("jvm") version "2.0.21"
    kotlin("plugin.serialization") version "2.0.21"
}

dependencies {
    implementation("io.ktor:ktor-server-core:3.0.3")
    implementation("io.ktor:ktor-server-netty:3.0.3")
    implementation("io.ktor:ktor-server-content-negotiation:3.0.3")
    implementation("io.ktor:ktor-serialization-kotlinx-json:3.0.3")
    implementation("ch.qos.logback:logback-classic:1.5.15")
    implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0")
}

18.1.2 Základný server

import io.ktor.server.application.*
import io.ktor.server.engine.*
import io.ktor.server.netty.*
import io.ktor.server.response.*
import io.ktor.server.routing.*

fun main() {
    embeddedServer(Netty, port = 8080) {
        routing {
            get("/") {
                call.respondText("Ahoj, svet!")
            }
        }
    }.start(wait = true)
}

Po spustení otvor prehliadač a zadaj http://localhost:8080.

18.1.3 Štruktúra projektu

Odporúčaná štruktúra pre väčší server:

src/main/kotlin/
├── Main.kt           // vstupny bod
├── routes/
│   └── UserRoutes.kt // definicia endpointov
├── models/
│   └── User.kt       // data triedy
└── plugins/
    └── Routing.kt    // konfiguracia routingu

Server beží na porte 8080 predvolene. Port môžeme zmeniť parametrom port = 8081.

Úlohy

Úloha 1

Vytvor Ktor server s endpointom GET /, ktorý vráti textovú odpoveď.

Úloha 2

Spusti server na inom porte a otvor jeho endpoint v prehliadači.

Úloha 3

Rozdeľ routing a dátový model do samostatných súborov podľa odporúčanej štruktúry.