0Pricing
Kotlin Academy · Урок

Настройка проекта 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 — локальная установка не требуется.

Все уроки этого курса

  1. Настройка проекта Ktor: embeddedServer и модули приложения
  2. Маршрутизация и типизированные параметры
  3. Согласование содержимого и kotlinx.serialization
  4. Плагины аутентификации: JWT и сеансы
← Назад к Kotlin Academy