Configurazione di un progetto Ktor: embeddedServer e moduli Application
Avvii un'applicazione Ktor, configuri Netty e definisca i moduli dell'applicazione.
Configurazione di un progetto Ktor: embeddedServer e moduli Application è una lezione Kotlin Academy gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Kotlin Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Kotlin Academy include 4 lezioni in totale.
Che cos'è Ktor?
Ktor è il framework Kotlin asincrono di JetBrains per creare server e client. È basato innanzitutto sulle coroutine, utilizza plugin e non contiene funzionalità nascoste: ogni caratteristica necessaria deve essere installata esplicitamente. Le applicazioni Ktor sono semplici programmi Kotlin: non è necessario alcun contenitore DI.
Aggiunta delle dipendenze Ktor
Aggiunga il motore server principale (Netty è il più comune) e la libreria server Ktor principale al file 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: punto di ingresso minimale
Il modo più semplice per avviare un server Ktor è utilizzare embeddedServer. Passi la factory del motore, la porta e un blocco di configurazione:
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)
}Moduli dell'applicazione
Per i progetti più grandi, suddivida la configurazione in moduli, ovvero funzioni di estensione per Application. Un modulo installa i plugin e registra le route. In questo modo la codebase è più facile da testare e da comporre:
fun Application.configureRouting() {
routing {
get("/health") { call.respondText("OK") }
}
}
fun Application.configureSerialization() {
install(ContentNegotiation) { json() }
}Chiamata dei moduli da main
Chiami le funzioni dei moduli all'interno del blocco embeddedServer per comporle:
fun main() {
embeddedServer(Netty, port = 8080) {
configureRouting()
configureSerialization()
configureSecurity()
}.start(wait = true)
}application.conf (configurazione HOCON)
L'alternativa a embeddedServer consiste nell'utilizzare un file application.conf (in formato HOCON) ed eseguire l'applicazione tramite EngineMain. Il file di configurazione specifica il modulo di ingresso e la porta:
# application.conf
ktor {
deployment { port = 8080 }
application {
modules = [ com.example.ApplicationKt.module ]
}
}EngineMain vs embeddedServer
Utilizzi embeddedServer quando desidera avere il pieno controllo nel codice (è ideale per i test e per le applicazioni semplici). Utilizzi EngineMain + application.conf quando desidera una configurazione specifica per l'ambiente senza ricompilare.
L'oggetto ApplicationCall
Ogni gestore di richieste riceve un ApplicationCall. L'oggetto fornisce accesso alla richiesta (call.request), alla risposta (call.response) e a helper come call.respondText() e call.respond().
Ambiente e logging
Acceda alla configurazione dell'ambiente all'interno di un modulo tramite environment.config. Il logging utilizza SLF4J; aggiunga un file logback.xml a src/main/resources/ per configurare i livelli di log e il formato dell'output.
Hot reload durante lo sviluppo
Ktor supporta l'hot reload durante lo sviluppo tramite il flag della modalità development. Lo abiliti in application.conf oppure programmaticamente: embeddedServer(Netty, port = 8080, developmentMode = true) { ... }.
Convenzione per la struttura del progetto
Struttura tipica di un progetto Ktor:
Application.kt— punto di ingressomain()plugins/— un file per ogni funzione di estensione di Application (Routing, Serialization, Auth ecc.)routes/— definizioni delle route raggruppate per dominiomodels/— classi di dati
Verifica rapida
Qual è lo scopo di una funzione di modulo Application in Ktor?
Riepilogo: configurazione di un progetto Ktor
Punti chiave:
embeddedServer(Engine, port) { ... }.start(wait=true)è il punto di ingresso più semplice- Suddivida la configurazione in funzioni di estensione del modulo
Application - Utilizzi
EngineMain+application.confper una configurazione esternalizzata - Ogni gestore di richieste utilizza
ApplicationCallper accedere a richiesta e risposta - Raggruppi le route in un package
routes/per facilitarne la manutenzione
Domande Frequenti
La lezione «Configurazione di un progetto Ktor: embeddedServer e moduli Application» è gratuita?
Sì — il testo completo di «Configurazione di un progetto Ktor: embeddedServer e moduli Application» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Kotlin Academy, passa a CoddyKit PRO. Il corso Kotlin Academy include 4 lezioni in totale.
Cosa imparerò in «Configurazione di un progetto Ktor: embeddedServer e moduli Application»?
Avvii un'applicazione Ktor, configuri Netty e definisca i moduli dell'applicazione. Eserciti Kotlin Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Kotlin Academy?
Non è richiesta alcuna esperienza precedente. Kotlin Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.
Quanto tempo richiede la lezione «Configurazione di un progetto Ktor: embeddedServer e moduli Application»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Kotlin Academy?
Sì. Ogni lezione Kotlin Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Configurazione di un progetto Ktor: embeddedServer e moduli Application
- Routing e parametri tipizzati
- Content negotiation e kotlinx.serialization
- Plugin di autenticazione: JWT e sessione