Kotlin Academy · Les

Routing en getypeerde parameters

Definieer routes met pad- en queryparameters en groepeer ze met routeblokken.

Les 2 van 413 stappen

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, post enzovoort binnen routing { }
  • Padparameters: {name} — open ze via call.parameters["name"]
  • Queryparameters: call.request.queryParameters["key"]
  • Groepeer routes met route("/prefix") { } en haal ze uit naar uitbreidingsfuncties voor Route
  • Ontvang inhoud met een specifiek type via call.receive() (ContentNegotiation vereist)
Gratis beginnen

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

  1. Ktor-project instellen: embeddedServer en Application-modules
  2. Routing en getypeerde parameters
  3. Content negotiation en kotlinx.serialization
  4. Authenticatieplugins: JWT en Session
← Terug naar Kotlin Academy