Настройка проекта Ktor: embeddedServer и модули приложения
Запустите приложение Ktor, настройте Netty и определите модули приложения.
«Настройка проекта Ktor: embeddedServer и модули приложения» — бесплатный урок Kotlin Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Kotlin Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Kotlin Academy содержит 4 уроков всего.
Что такое Ktor
Ktor — асинхронный фреймворк JetBrains на Kotlin для создания серверов и клиентов. Он изначально ориентирован на сопрограммы, построен на плагинах и не содержит магии: каждая необходимая функция устанавливается явно. Приложения Ktor представляют собой обычные программы на Kotlin — контейнер DI не требуется.
Добавление зависимостей Ktor
Добавьте основной серверный движок (Netty используется чаще всего) и основную серверную библиотеку Ktor в свой 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: минимальная точка входа
Простейший способ запустить сервер Ktor — использовать embeddedServer. Передайте фабрику движка, порт и блок конфигурации:
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)
}Модули приложения
В крупных проектах разделяйте конфигурацию на модули — функции-расширения для Application. Модуль устанавливает плагины и регистрирует маршруты. Это делает кодовую базу более удобной для тестирования и композиции:
fun Application.configureRouting() {
routing {
get("/health") { call.respondText("OK") }
}
}
fun Application.configureSerialization() {
install(ContentNegotiation) { json() }
}Вызов модулей из main
Вызовите функции модулей внутри блока embeddedServer, чтобы скомпоновать их:
fun main() {
embeddedServer(Netty, port = 8080) {
configureRouting()
configureSerialization()
configureSecurity()
}.start(wait = true)
}application.conf (конфигурация HOCON)
Альтернатива embeddedServer — использование файла application.conf в формате HOCON и запуск через EngineMain. Файл конфигурации указывает модуль входа и порт:
# application.conf
ktor {
deployment { port = 8080 }
application {
modules = [ com.example.ApplicationKt.module ]
}
}EngineMain и embeddedServer
Используйте embeddedServer, когда нужен полный контроль в коде — это удобно для тестирования и простых приложений. Используйте EngineMain и application.conf, когда нужна конфигурация, зависящая от окружения, без повторной компиляции.
Объект ApplicationCall
Каждый обработчик запроса получает ApplicationCall. Он предоставляет доступ к запросу (call.request), ответу (call.response) и вспомогательным функциям, таким как call.respondText() и call.respond().
Окружение и журналирование
Получайте доступ к конфигурации окружения внутри модуля через environment.config. Для журналирования используется SLF4J; добавьте logback.xml в src/main/resources/, чтобы настроить уровни журналирования и формат вывода.
Горячая перезагрузка при разработке
Ktor поддерживает горячую перезагрузку во время разработки с помощью флага режима development. Включите ее в application.conf или программно: embeddedServer(Netty, port = 8080, developmentMode = true) { ... }.
Принятая структура проекта
Типичная структура проекта Ktor:
Application.kt— точка входаmain()plugins/— по одному файлу на функцию-расширение Application (маршрутизация, сериализация, аутентификация и т. д.)routes/— определения маршрутов, сгруппированные по предметной областиmodels/— классы данных
Быстрая проверка
Каково назначение функции модуля Application в Ktor?
Повторение: настройка проекта Ktor
Ключевые выводы:
embeddedServer(Engine, port) { ... }.start(wait=true)— простейшая точка входа- Разделяйте конфигурацию на функции-расширения для
Application - Используйте
EngineMainиapplication.confдля внешней конфигурации - Каждый обработчик запроса работает с
ApplicationCallдля доступа к запросу и ответу - Группируйте маршруты в пакете
routes/для удобства сопровождения
Часто задаваемые вопросы
Урок «Настройка проекта Ktor: embeddedServer и модули приложения» бесплатный?
Да — полный текст урока «Настройка проекта Ktor: embeddedServer и модули приложения» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Kotlin Academy, подпишись на CoddyKit PRO. Курс Kotlin Academy содержит 4 уроков всего.
Чему я научусь в уроке «Настройка проекта Ktor: embeddedServer и модули приложения»?
Запустите приложение Ktor, настройте Netty и определите модули приложения. Ты практикуешь Kotlin Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Kotlin Academy?
Предыдущий опыт не требуется. Kotlin Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Настройка проекта Ktor: embeddedServer и модули приложения»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Kotlin Academy?
Да. Каждый урок Kotlin Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Настройка проекта Ktor: embeddedServer и модули приложения
- Маршрутизация и типизированные параметры
- Согласование содержимого и kotlinx.serialization
- Плагины аутентификации: JWT и сеансы