Kotlin Academy · leksjon

Ktor-prosjektoppsett: embeddedServer og Application-moduler

Start en Ktor-applikasjon, konfigurer Netty og definer applikasjonsmoduler.

Leksjon 1 av 413 trinn

Ktor-prosjektoppsett: embeddedServer og Application-moduler er en gratis leksjon i Kotlin Academy på CoddyKit. Dette er leksjon 1 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Kotlin Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Kotlin Academy inneholder totalt 4 leksjoner.

Hva er Ktor?

Ktor er JetBrains' asynkrone Kotlin-rammeverk for å bygge servere og klienter. Det er coroutine-basert, plugin-basert og uten skjult magi: alle funksjoner som trengs, må installeres eksplisitt. Ktor-applikasjoner er vanlige Kotlin-programmer — ingen DI-container er nødvendig.

Legge til Ktor-avhengigheter

Legg til den sentrale servermotoren (Netty er den vanligste) og det sentrale Ktor-serverbiblioteket i build.gradle.kts:

dependencies {
    implementation("io.ktor:ktor-server-core:2.3.12")
    implementation("io.ktor:ktor-server-netty:2.3.12")
    implementation("ch.qos.logback:logback-classic:1.5.6") // logging
}

embeddedServer: Minimalt inngangspunkt

Den enkleste måten å starte en Ktor-server på er embeddedServer. Angi motorfabrikken, porten og en konfigurasjonsblokk:

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

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

Applikasjonsmoduler

I større prosjekter kan konfigurasjonen deles opp i moduler — utvidelsesfunksjoner for Application. En modul installerer pluginer og registrerer ruter. Dette gjør kodebasen enklere å teste og sette sammen:

fun Application.configureRouting() {
    routing {
        get("/health") { call.respondText("OK") }
    }
}

fun Application.configureSerialization() {
    install(ContentNegotiation) { json() }
}

Kalle moduler fra main

Kall modulfunksjonene i embeddedServer-blokken for å sette dem sammen:

fun main() {
    embeddedServer(Netty, port = 8080) {
        configureRouting()
        configureSerialization()
        configureSecurity()
    }.start(wait = true)
}

application.conf (HOCON-konfigurasjon)

Et alternativ til embeddedServer er å bruke en application.conf-fil (HOCON-format) og kjøre via EngineMain. Konfigurasjonsfilen angir inngangsmodulen og porten:

# application.conf
ktor {
    deployment { port = 8080 }
    application {
        modules = [ com.example.ApplicationKt.module ]
    }
}

EngineMain kontra embeddedServer

Bruk embeddedServer når full kontroll i koden er ønskelig (svært godt egnet for testing og enkle apper). Bruk EngineMain + application.conf når miljøspesifikk konfigurasjon er ønskelig uten å kompilere på nytt.

ApplicationCall-objektet

Hver forespørselshåndterer mottar en ApplicationCall. Den gir tilgang til forespørselen (call.request), svaret (call.response) og hjelpefunksjoner som call.respondText() og call.respond().

Miljø og logging

Få tilgang til miljøkonfigurasjon i en modul via environment.config. Logging bruker SLF4J. Legg til en logback.xml i src/main/resources/ for å konfigurere loggnivåer og utdataformat.

Hot reload under utvikling

Ktor støtter hot reload under utvikling via flagget development. Aktiver det i application.conf eller programmatisk: embeddedServer(Netty, port = 8080, developmentMode = true) { ... }.

Konvensjon for prosjektstruktur

En typisk Ktor-prosjektstruktur:

  • Application.kt — inngangspunktet main()
  • plugins/ — én fil per Application-utvidelsesfunksjon (Routing, Serialization, Auth og så videre)
  • routes/ — rutedefinisjoner gruppert etter domene
  • models/ — dataklasser

Kort kontroll

Hva er formålet med en Application-modulfunksjon i Ktor?

Oppsummering: Sette opp et Ktor-prosjekt

Viktigste punkter:

  • embeddedServer(Engine, port) { ... }.start(wait=true) er det enkleste inngangspunktet
  • Del konfigurasjonen opp i modulutvidelsesfunksjoner for Application
  • Bruk EngineMain + application.conf for ekstern konfigurasjon
  • Alle forespørselshåndterere bruker ApplicationCall for tilgang til forespørsel og svar
  • Gruppér ruter i en routes/-pakke for bedre vedlikehold
Gratis å komme i gang

Lær deg Kotlin med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
51
Leksjoner
203

Ofte stilte spørsmål

Er leksjonen «Ktor-prosjektoppsett: embeddedServer og Application-moduler» gratis?

Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Kotlin Academy, inkludert «Ktor-prosjektoppsett: embeddedServer og Application-moduler», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i Kotlin Academy inneholder totalt 4 leksjoner.

Hva lærer jeg i «Ktor-prosjektoppsett: embeddedServer og Application-moduler»?

Start en Ktor-applikasjon, konfigurer Netty og definer applikasjonsmoduler. Du øver på Kotlin Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Kotlin Academy?

Ingen tidligere erfaring er nødvendig. Kotlin Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 1 av 4.

Hvor lang tid tar leksjonen «Ktor-prosjektoppsett: embeddedServer og Application-moduler»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Kotlin Academy-leksjonen?

Ja. Alle Kotlin Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Ktor-prosjektoppsett: embeddedServer og Application-moduler
  2. Ruting og typede parametere
  3. Innholdsforhandling og kotlinx.serialization
  4. Autentiseringsplugins: JWT og session
← Tilbake til Kotlin Academy