Routage et paramètres typés
Définissez des routes avec des paramètres de chemin et de requête, puis regroupez-les avec des blocs de routes.
Routage et paramètres typés est une leçon Kotlin Academy gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Kotlin Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Kotlin Academy comprend 4 leçons au total.
Notions de base du routage Ktor
Le routage dans Ktor est un module d’extension installé au moyen de install(Routing) { ... } ou de la forme abrégée routing { ... }. Les routes sont définies à l’aide de fonctions correspondant aux méthodes HTTP : get, post, put, delete, patch.
routing {
get("/hello") { call.respondText("Hello!") }
post("/items") { /* handle POST */ }
}Paramètres de chemin
Définissez un paramètre de chemin avec {name}. Accédez-y au moyen de call.parameters["name"]. La valeur est toujours un String? :
get("/users/{id}") {
val id = call.parameters["id"] ?: return@get call.respondText("Missing id", status = HttpStatusCode.BadRequest)
call.respondText("User: $id")
}Segments de chemin facultatifs
Rendez un segment facultatif en lui ajoutant ? : {name?}. Si le segment est absent, call.parameters["name"] renvoie null.
get("/posts/{slug?}") {
val slug = call.parameters["slug"]
if (slug == null) call.respondText("All posts")
else call.respondText("Post: $slug")
}Conversion typée des paramètres
Convertissez les paramètres de chemin en valeurs typées au moyen de fonctions d’extension sur Parameters. Ktor fournit des fonctions utilitaires intégrées, mais vous pouvez également écrire les vôtres :
get("/items/{id}") {
val id = call.parameters["id"]?.toLongOrNull()
?: return@get call.respond(HttpStatusCode.BadRequest, "Invalid id")
call.respondText("Item #$id")
}Paramètres de requête
Accédez aux paramètres de la chaîne de requête au moyen de call.request.queryParameters["key"]. Plusieurs valeurs pour une même clé sont disponibles au moyen de getAll("key") :
get("/search") {
val q = call.request.queryParameters["q"] ?: ""
val page = call.request.queryParameters["page"]?.toIntOrNull() ?: 1
call.respondText("Search: $q, page $page")
}Regroupement des routes
Regroupez les routes associées sous un préfixe commun au moyen de route("/prefix") { ... }. Cela réduit les répétitions et rend l’arborescence du routage plus lisible :
route("/api/v1") {
route("/users") {
get { /* list users */ }
get("/{id}") { /* get user by id */ }
post { /* create user */ }
}
}Organisation des routes dans des fonctions
Extrayez les groupes de routes dans des fonctions d’extension sur Route afin de conserver une configuration du routage modulaire :
fun Route.userRoutes() {
route("/users") {
get { /* ... */ }
post { /* ... */ }
get("/{id}") { /* ... */ }
}
}
// In Application module:
routing { userRoutes() }Gestion du corps de la requête
Recevez un corps de requête sous forme de texte, d’octets ou d’objet désérialisé (nécessite le module d’extension ContentNegotiation). Utilisez call.receive<T>() pour effectuer une désérialisation typée :
post("/users") {
val user = call.receive<UserDto>()
call.respond(HttpStatusCode.Created, user)
}Réponse avec des codes d’état
Utilisez call.respond(status, body) pour un contrôle total, ou les méthodes pratiques call.respondText(), call.respondFile() et 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)
}Routes à caractère générique et à segment final
Utilisez * pour un segment générique unique et {...} (paramètre final) pour faire correspondre le reste du chemin en tant que paramètre unique :
get("/static/{path...}") {
val filePath = call.parameters.getAll("path")?.joinToString("/") ?: ""
call.respondText("Serving: $filePath")
}Priorité des routes
Ktor évalue les routes dans l’ordre de leur déclaration. Les routes les plus spécifiques doivent être déclarées avant les caractères génériques. Lorsque deux routes correspondent, la première correspondance l’emporte.
Vérification rapide
Comment regrouper plusieurs routes sous un préfixe d’URL commun dans Ktor ?
Récapitulatif : routage et paramètres typés
Points essentiels :
- Définissez les routes avec
get,post, etc. dansrouting { } - Paramètres de chemin :
{name}— accès au moyen decall.parameters["name"] - Paramètres de requête :
call.request.queryParameters["key"] - Regroupez les routes avec
route("/prefix") { }et extrayez-les dans des fonctions d’extension surRoute - Recevez des corps typés avec
call.receive<T>()(ContentNegotiation est nécessaire)
Apprends Kotlin avec un tuteur IA — gratuit
Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.
- Cours
- 51
- Leçons
- 203
Questions Fréquemment Posées
La leçon « Routage et paramètres typés » est-elle gratuite ?
Oui — le texte complet de « Routage et paramètres typés » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Kotlin Academy, passe à CoddyKit PRO. Le cours Kotlin Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Routage et paramètres typés » ?
Définissez des routes avec des paramètres de chemin et de requête, puis regroupez-les avec des blocs de routes. Tu pratiques Kotlin Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Kotlin Academy ?
Aucune expérience préalable n'est requise. Kotlin Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.
Combien de temps prend la leçon « Routage et paramètres typés » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Kotlin Academy ?
Oui. Chaque leçon Kotlin Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Configuration d’un projet Ktor : embeddedServer et modules d’application
- Routage et paramètres typés
- Négociation de contenu et kotlinx.serialization
- Modules d’authentification : JWT et session