0Pricing
Kotlin Academy · Lekcja

Konfiguracja projektu Ktor: embeddedServer i moduły Application

Uruchom aplikację Ktor, skonfiguruj Netty i zdefiniuj moduły aplikacji.

Konfiguracja projektu Ktor: embeddedServer i moduły Application to bezpłatna lekcja Kotlin Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Kotlin Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Kotlin Academy zawiera 4 lekcji w sumie.

Czym jest Ktor

Ktor to asynchroniczny framework Kotlin firmy JetBrains do budowania serwerów i klientów. Jest oparty przede wszystkim na korutynach i wtyczkach, a także nie zawiera żadnej ukrytej magii: każdą potrzebną funkcję trzeba jawnie zainstalować. Aplikacje Ktor to zwykłe programy Kotlin — nie wymagają kontenera DI.

Dodawanie zależności Ktor

Do pliku build.gradle.kts należy dodać podstawowy silnik serwera (najczęściej Netty) oraz podstawową bibliotekę serwera Ktor:

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: Minimalny punkt wejścia

Najprostszym sposobem uruchomienia serwera Ktor jest użycie embeddedServer. Należy przekazać fabrykę silnika, port oraz blok konfiguracji:

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)
}

Moduły aplikacji

W większych projektach konfigurację należy podzielić na moduły — funkcje rozszerzające dla Application. Moduł instaluje wtyczki i rejestruje trasy. Dzięki temu baza kodu jest łatwiejsza do testowania i komponowania:

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

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

Wywoływanie modułów z main

Funkcje modułów należy wywołać wewnątrz bloku embeddedServer, aby je połączyć:

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

application.conf (konfiguracja HOCON)

Alternatywą dla embeddedServer jest użycie pliku application.conf (w formacie HOCON) i uruchamianie aplikacji za pomocą EngineMain. Plik konfiguracyjny określa moduł wejściowy i port:

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

EngineMain a embeddedServer

Należy użyć embeddedServer, gdy potrzebna jest pełna kontrola w kodzie — jest to dobre rozwiązanie do testów i prostych aplikacji. EngineMain wraz z application.conf należy stosować, gdy potrzebna jest konfiguracja zależna od środowiska bez ponownej kompilacji.

Obiekt ApplicationCall

Każdy moduł obsługi żądania otrzymuje obiekt ApplicationCall. Zapewnia on dostęp do żądania (call.request), odpowiedzi (call.response) oraz funkcji pomocniczych, takich jak call.respondText() i call.respond().

Środowisko i logowanie

Do konfiguracji środowiska wewnątrz modułu można uzyskać dostęp za pomocą environment.config. Logowanie korzysta z SLF4J; aby skonfigurować poziomy logowania i format danych wyjściowych, należy dodać plik logback.xml do katalogu src/main/resources/.

Automatyczne przeładowywanie podczas programowania

Ktor obsługuje automatyczne przeładowywanie podczas programowania za pomocą flagi trybu development. Można ją włączyć w pliku application.conf albo programowo: embeddedServer(Netty, port = 8080, developmentMode = true) { ... }.

Konwencja struktury projektu

Typowy układ projektu Ktor:

  • Application.kt — punkt wejścia main()
  • plugins/ — jeden plik na funkcję rozszerzającą Application (Routing, Serialization, Auth itd.)
  • routes/ — definicje tras pogrupowane według domen
  • models/ — klasy danych

Szybkie sprawdzenie

Jaki jest cel funkcji modułu Application w Ktor?

Podsumowanie: Konfiguracja projektu Ktor

Najważniejsze informacje:

  • embeddedServer(Engine, port) { ... }.start(wait=true) to najprostszy punkt wejścia
  • Konfigurację należy podzielić na funkcje rozszerzające modułów dla Application
  • EngineMain wraz z application.conf należy stosować do zewnętrznej konfiguracji
  • Każdy moduł obsługi żądania korzysta z ApplicationCall w celu uzyskania dostępu do żądania i odpowiedzi
  • Aby ułatwić utrzymanie projektu, trasy należy grupować w pakiecie routes/

Często zadawane pytania

Czy lekcja „Konfiguracja projektu Ktor: embeddedServer i moduły Application” jest bezpłatna?

Tak — pełny tekst „Konfiguracja projektu Ktor: embeddedServer i moduły Application” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Kotlin Academy, przejdź na CoddyKit PRO. Kurs Kotlin Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Konfiguracja projektu Ktor: embeddedServer i moduły Application”?

Uruchom aplikację Ktor, skonfiguruj Netty i zdefiniuj moduły aplikacji. Ćwiczysz Kotlin Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Kotlin Academy?

Nie wymagamy żadnego doświadczenia. Kotlin Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.

Ile czasu zajmuje lekcja „Konfiguracja projektu Ktor: embeddedServer i moduły Application”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Kotlin Academy?

Tak. Każda lekcja Kotlin Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Konfiguracja projektu Ktor: embeddedServer i moduły Application
  2. Routing i typowane parametry
  3. Negocjowanie treści i kotlinx.serialization
  4. Wtyczki uwierzytelniania: JWT i sesje
← Powrót do Kotlin Academy