Routing e parametri tipizzati
Definisca route con parametri del percorso e query parameter e li raggruppi con blocchi route.
Routing e parametri tipizzati è una lezione Kotlin Academy gratuita su CoddyKit. Questa è la lezione 2 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.
Nozioni di base sul routing in Ktor
In Ktor, il routing è un plugin installato tramite install(Routing) { ... } oppure tramite la notazione abbreviata routing { ... }. Le route vengono definite utilizzando funzioni per i metodi HTTP: get, post, put, delete, patch.
routing {
get("/hello") { call.respondText("Hello!") }
post("/items") { /* handle POST */ }
}Parametri del percorso
Definisca un parametro del percorso con {name}. Vi acceda tramite call.parameters["name"]. Il valore è sempre un String?:
get("/users/{id}") {
val id = call.parameters["id"] ?: return@get call.respondText("Missing id", status = HttpStatusCode.BadRequest)
call.respondText("User: $id")
}Segmenti facoltativi del percorso
Renda facoltativo un segmento aggiungendo ?: {name?}. Se il segmento è assente, call.parameters["name"] restituisce null.
get("/posts/{slug?}") {
val slug = call.parameters["slug"]
if (slug == null) call.respondText("All posts")
else call.respondText("Post: $slug")
}Conversione tipizzata dei parametri
Converta i parametri del percorso in valori tipizzati utilizzando funzioni di estensione su Parameters. Ktor fornisce helper integrati, oppure può scriverne di propri:
get("/items/{id}") {
val id = call.parameters["id"]?.toLongOrNull()
?: return@get call.respond(HttpStatusCode.BadRequest, "Invalid id")
call.respondText("Item #$id")
}Parametri di query
Acceda ai parametri della query string tramite call.request.queryParameters["key"]. I valori multipli per la stessa chiave sono disponibili tramite getAll("key"):
get("/search") {
val q = call.request.queryParameters["q"] ?: ""
val page = call.request.queryParameters["page"]?.toIntOrNull() ?: 1
call.respondText("Search: $q, page $page")
}Raggruppamento delle route
Raggruppi le route correlate sotto un prefisso comune utilizzando route("/prefix") { ... }. In questo modo riduce le ripetizioni e rende leggibile l'albero di routing:
route("/api/v1") {
route("/users") {
get { /* list users */ }
get("/{id}") { /* get user by id */ }
post { /* create user */ }
}
}Organizzazione delle route in funzioni
Estragga i gruppi di route in funzioni di estensione per Route per mantenere modulare la configurazione del routing:
fun Route.userRoutes() {
route("/users") {
get { /* ... */ }
post { /* ... */ }
get("/{id}") { /* ... */ }
}
}
// In Application module:
routing { userRoutes() }Gestione del corpo della richiesta
Riceva il corpo di una richiesta come testo, byte o oggetto deserializzato (è necessario il plugin ContentNegotiation). Utilizzi call.receive per la deserializzazione tipizzata:
post("/users") {
val user = call.receive<UserDto>()
call.respond(HttpStatusCode.Created, user)
}Risposta con codici di stato
Utilizzi call.respond(status, body) per avere il pieno controllo, oppure i metodi di utilità call.respondText(), call.respondFile(), call.respond(HttpStatusCode.NotFound):
get("/users/{id}") {
val user = userRepo.find(call.parameters["id"])
if (user == null) call.respond(HttpStatusCode.NotFound)
else call.respond(user)
}Route wildcard e tailcard
Utilizzi * per un singolo segmento wildcard e {...} (tailcard) per fare corrispondere il resto del percorso come un unico parametro:
get("/static/{path...}") {
val filePath = call.parameters.getAll("path")?.joinToString("/") ?: ""
call.respondText("Serving: $filePath")
}Priorità delle route
Ktor valuta le route nell'ordine in cui sono state dichiarate. Le route più specifiche devono essere dichiarate prima delle wildcard. Quando corrispondono due route, viene utilizzata la prima corrispondenza.
Verifica rapida
Come si raggruppano più route sotto un prefisso URL comune in Ktor?
Riepilogo: routing e parametri tipizzati
Punti chiave:
- Definisca le route con
get,poste così via all'interno dirouting { } - Parametri del percorso:
{name}— vi acceda tramitecall.parameters["name"] - Parametri di query:
call.request.queryParameters["key"] - Raggruppi le route con
route("/prefix") { }ed estragga i gruppi in funzioni di estensione perRoute - Riceva corpi tipizzati con
call.receive(richiede ContentNegotiation)()
Impara Kotlin con un tutor IA — gratis
Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.
- Corsi
- 51
- Lezioni
- 203
Domande Frequenti
La lezione «Routing e parametri tipizzati» è gratuita?
Sì — il testo completo di «Routing e parametri tipizzati» è 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 «Routing e parametri tipizzati»?
Definisca route con parametri del percorso e query parameter e li raggruppi con blocchi route. 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 2 di 4.
Quanto tempo richiede la lezione «Routing e parametri tipizzati»?
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