0Pricing
Kotlin Academy · Aula

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 entrada main()
  • plugins/ — um arquivo por função de extensão de Application (Routing, Serialization, Auth etc.)
  • routes/ — definições de rotas agrupadas por domínio
  • models/ — 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.conf para configuração externalizada
  • Todo manipulador de requisições trabalha com ApplicationCall para 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

  1. Configuração de projeto Ktor: embeddedServer e módulos de aplicação
  2. Roteamento e parâmetros tipados
  3. Negociação de conteúdo e kotlinx.serialization
  4. Plugins de autenticação: JWT e sessão
← Voltar para Kotlin Academy