Routing en getypeerde parameters
Definieer routes met pad- en queryparameters en groepeer ze met routeblokken.
Routing en getypeerde parameters is een gratis Kotlin Academy-les op CoddyKit. Dit is les 2 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Kotlin Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Kotlin Academy bevat in totaal 4 lessen.
Basisprincipes van routering in Ktor
Routering in Ktor is een plugin die je installeert via install(Routing) { ... } of de verkorte notatie routing { ... }. Routes definieer je met functies voor HTTP-methoden: get, post, put, delete, patch.
routing {
get("/hello") { call.respondText("Hello!") }
post("/items") { /* handle POST */ }
}Padparameters
Definieer een padparameter met {name}. Open deze via call.parameters["name"]. De waarde is altijd een String?:
get("/users/{id}") {
val id = call.parameters["id"] ?: return@get call.respondText("Missing id", status = HttpStatusCode.BadRequest)
call.respondText("User: $id")
}Optionele padsegmenten
Markeer een segment als optioneel door ? toe te voegen: {name?}. Als het segment ontbreekt, retourneert call.parameters["name"] null.
get("/posts/{slug?}") {
val slug = call.parameters["slug"]
if (slug == null) call.respondText("All posts")
else call.respondText("Post: $slug")
}Conversie van parameters naar types
Converteer padparameters naar waarden met een specifiek type met behulp van uitbreidingsfuncties voor Parameters. Ktor biedt ingebouwde hulpmethoden, of je kunt je eigen hulpmethoden schrijven:
get("/items/{id}") {
val id = call.parameters["id"]?.toLongOrNull()
?: return@get call.respond(HttpStatusCode.BadRequest, "Invalid id")
call.respondText("Item #$id")
}Queryparameters
Open queryparameters via call.request.queryParameters["key"]. Meerdere waarden voor dezelfde sleutel zijn beschikbaar via getAll("key"):
get("/search") {
val q = call.request.queryParameters["q"] ?: ""
val page = call.request.queryParameters["page"]?.toIntOrNull() ?: 1
call.respondText("Search: $q, page $page")
}Routes groeperen
Groepeer verwante routes onder een gemeenschappelijk voorvoegsel met route("/prefix") { ... }. Dit vermindert herhaling en maakt de routeringsstructuur leesbaar:
route("/api/v1") {
route("/users") {
get { /* list users */ }
get("/{id}") { /* get user by id */ }
post { /* create user */ }
}
}Routes in functies organiseren
Haal routegroepen uit naar uitbreidingsfuncties voor Route om de routeringsconfiguratie modulair te houden:
fun Route.userRoutes() {
route("/users") {
get { /* ... */ }
post { /* ... */ }
get("/{id}") { /* ... */ }
}
}
// In Application module:
routing { userRoutes() }De inhoud van een aanvraag verwerken
Ontvang de inhoud van een aanvraag als tekst, bytes of een gedeserialiseerd object (hiervoor is de plugin ContentNegotiation nodig). Gebruik call.receive voor deserialisatie naar een specifiek type:
post("/users") {
val user = call.receive<UserDto>()
call.respond(HttpStatusCode.Created, user)
}Antwoorden met statuscodes
Gebruik call.respond(status, body) voor volledige controle, of de handige methoden 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)
}Jokertekens en tailcard-routes
Gebruik * voor één segment met een jokerteken en {...} (tailcard) om de rest van het pad als één parameter te laten overeenkomen:
get("/static/{path...}") {
val filePath = call.parameters.getAll("path")?.joinToString("/") ?: ""
call.respondText("Serving: $filePath")
}Prioriteiten van routes
Ktor evalueert routes in de volgorde waarin ze zijn gedeclareerd. Specifiekere routes moeten vóór jokertekens worden gedeclareerd. Als twee routes overeenkomen, wint de eerste overeenkomst.
Korte controle
Hoe groepeer je meerdere routes onder een gemeenschappelijk URL-voorvoegsel in Ktor?
Samenvatting: routering en parameters met types
Belangrijkste punten:
- Definieer routes met
get,postenzovoort binnenrouting { } - Padparameters:
{name}— open ze viacall.parameters["name"] - Queryparameters:
call.request.queryParameters["key"] - Groepeer routes met
route("/prefix") { }en haal ze uit naar uitbreidingsfuncties voorRoute - Ontvang inhoud met een specifiek type via
call.receive(ContentNegotiation vereist)()
Leer Kotlin met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 51
- Lessen
- 203
Veelgestelde vragen
Is de les “Routing en getypeerde parameters” gratis?
Ja — je kunt hier op het web alle 3 lessen van het leerpad Kotlin Academy, waaronder “Routing en getypeerde parameters”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus Kotlin Academy bevat in totaal 4 lessen.
Wat leer ik in “Routing en getypeerde parameters”?
Definieer routes met pad- en queryparameters en groepeer ze met routeblokken. Je oefent met Kotlin Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met Kotlin Academy te beginnen?
Ervaring vooraf is niet nodig. Kotlin Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 2 van 4.
Hoe lang duurt de les “Routing en getypeerde parameters”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over Kotlin Academy?
Ja. Elke les over Kotlin Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- Ktor-project instellen: embeddedServer en Application-modules
- Routing en getypeerde parameters
- Content negotiation en kotlinx.serialization
- Authenticatieplugins: JWT en Session