Configuração de projeto Ktor: embeddedServer e módulos de aplicação
Inicie uma aplicação Ktor, configure o Netty e defina módulos de aplicação.
Configuração de projeto Ktor: embeddedServer e módulos de aplicação é uma aula grátis de Kotlin Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Kotlin Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Kotlin Academy inclui 4 aulas no total.
O que é Ktor?
Ktor é uma estrutura assíncrona de Kotlin, desenvolvida pela JetBrains, para criar servidores e clientes. Ela prioriza corrotinas, é baseada em plug-ins e não tem mágica: cada recurso necessário é instalado explicitamente. As aplicações Ktor são programas Kotlin comuns — nenhum contêiner de DI é necessário.
Adicionando dependências do Ktor
Adicione o mecanismo principal do servidor (Netty é o mais comum) e a biblioteca principal do servidor Ktor ao seu 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: ponto de entrada mínimo
A maneira mais simples de iniciar um servidor Ktor é usar embeddedServer. Passe a fábrica do mecanismo, a porta e um bloco de configuração:
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)
}Módulos da aplicação
Em projetos maiores, divida a configuração em módulos — funções de extensão de Application. Um módulo instala plug-ins e registra rotas. Isso torna a base de código mais fácil de testar e combinar:
fun Application.configureRouting() {
routing {
get("/health") { call.respondText("OK") }
}
}
fun Application.configureSerialization() {
install(ContentNegotiation) { json() }
}Chamando módulos a partir do ponto de entrada
Chame as funções dos módulos dentro do bloco de embeddedServer para combiná-las:
fun main() {
embeddedServer(Netty, port = 8080) {
configureRouting()
configureSerialization()
configureSecurity()
}.start(wait = true)
}application.conf (configuração HOCON)
A alternativa a embeddedServer é usar um arquivo application.conf (formato HOCON) e executar por meio de EngineMain. O arquivo de configuração especifica o módulo de entrada e a porta:
# application.conf
ktor {
deployment { port = 8080 }
application {
modules = [ com.example.ApplicationKt.module ]
}
}EngineMain versus embeddedServer
Use embeddedServer quando quiser controle total no código (ótimo para testes e aplicações simples). Use EngineMain + application.conf quando quiser uma configuração específica para cada ambiente sem recompilar.
O objeto ApplicationCall
Todo manipulador de requisições recebe um ApplicationCall. Ele fornece acesso à requisição (call.request), à resposta (call.response) e a auxiliares como call.respondText() e call.respond().
Ambiente e registro de eventos
Acesse a configuração do ambiente dentro de um módulo por meio de environment.config. O registro de eventos usa SLF4J; adicione um logback.xml a src/main/resources/ para configurar os níveis de registro e o formato da saída.
Recarga automática no desenvolvimento
O Ktor oferece recarga automática durante o desenvolvimento por meio do sinalizador do modo de development. Ative-a em application.conf ou programaticamente: embeddedServer(Netty, port = 8080, developmentMode = true) { ... }.
Convenção de estrutura do projeto
Uma estrutura típica de projeto Ktor:
Application.kt— ponto de entradamain()plugins/— um arquivo por função de extensão de Application (Routing, Serialization, Auth etc.)routes/— definições de rotas agrupadas por domíniomodels/— classes de dados
Verificação rápida
Qual é a finalidade de uma função de módulo da aplicação no Ktor?
Recapitulação: configuração de um projeto Ktor
Principais conclusões:
embeddedServer(Engine, port) { ... }.start(wait=true)é o ponto de entrada mais simples- Divida a configuração em funções de extensão de módulo para
Application - Use
EngineMain+application.confpara configuração externalizada - Todo manipulador de requisições trabalha com
ApplicationCallpara acessar a requisição e a resposta - Agrupe as rotas em um pacote
routes/para facilitar a manutenção
Perguntas Frequentes
A aula “Configuração de projeto Ktor: embeddedServer e módulos de aplicação” é grátis?
Sim — o texto completo de “Configuração de projeto Ktor: embeddedServer e módulos de aplicação” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Kotlin Academy, atualize para CoddyKit PRO. O curso de Kotlin Academy inclui 4 aulas no total.
O que vou aprender em “Configuração de projeto Ktor: embeddedServer e módulos de aplicação”?
Inicie uma aplicação Ktor, configure o Netty e defina módulos de aplicação. Você pratica Kotlin Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Kotlin Academy?
Nenhuma experiência prévia é necessária. Kotlin Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.
Quanto tempo leva a aula “Configuração de projeto Ktor: embeddedServer e módulos de aplicação”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Kotlin Academy?
Sim. Cada aula de Kotlin Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Configuração de projeto Ktor: embeddedServer e módulos de aplicação
- Roteamento e parâmetros tipados
- Negociação de conteúdo e kotlinx.serialization
- Plugins de autenticação: JWT e sessão