Yönlendirme ve Türlendirilmiş Parametreler
Yol ve sorgu parametreleriyle yönlendirmeler tanımlayın ve bunları route bloklarıyla gruplayın.
Yönlendirme ve Türlendirilmiş Parametreler, CoddyKit'te ücretsiz bir Kotlin Academy dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Kotlin Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Kotlin Academy kursu toplamda 4 dersten oluşur.
Ktor Yönlendirme Temelleri
Ktor'da yönlendirme, install(Routing) { ... } aracılığıyla yüklenen bir eklentidir veya routing { ... } kısa gösterimi kullanılabilir. Rotalar HTTP yöntemi işlevleriyle tanımlanır: get, post, put, delete, patch.
routing {
get("/hello") { call.respondText("Hello!") }
post("/items") { /* handle POST */ }
}Yol Parametreleri
{name} ile bir yol parametresi tanımlayın. Parametreye call.parameters["name"] üzerinden erişin. Değer her zaman bir String? türündedir:
get("/users/{id}") {
val id = call.parameters["id"] ?: return@get call.respondText("Missing id", status = HttpStatusCode.BadRequest)
call.respondText("User: $id")
}İsteğe Bağlı Yol Kesimleri
? ekleyerek bir kesimi isteğe bağlı olarak işaretleyin: {name?}. Kesim yoksa call.parameters["name"] değeri null döndürür.
get("/posts/{slug?}") {
val slug = call.parameters["slug"]
if (slug == null) call.respondText("All posts")
else call.respondText("Post: $slug")
}Parametreleri Türlere Dönüştürme
Yol parametrelerini, Parameters üzerindeki genişletme işlevlerini kullanarak türü belirli değerlere dönüştürün. Ktor yerleşik yardımcılar sunar; isterseniz kendiniz de yazabilirsiniz:
get("/items/{id}") {
val id = call.parameters["id"]?.toLongOrNull()
?: return@get call.respond(HttpStatusCode.BadRequest, "Invalid id")
call.respondText("Item #$id")
}Sorgu Parametreleri
Sorgu dizesi parametrelerine call.request.queryParameters["key"] üzerinden erişin. Aynı anahtar için birden çok değere getAll("key") aracılığıyla ulaşabilirsiniz:
get("/search") {
val q = call.request.queryParameters["q"] ?: ""
val page = call.request.queryParameters["page"]?.toIntOrNull() ?: 1
call.respondText("Search: $q, page $page")
}Rotaları Gruplama
İlgili rotaları route("/prefix") { ... } kullanarak ortak bir önek altında gruplayın. Bu, tekrarı azaltır ve yönlendirme ağacının okunabilir olmasını sağlar:
route("/api/v1") {
route("/users") {
get { /* list users */ }
get("/{id}") { /* get user by id */ }
post { /* create user */ }
}
}Rotaları İşlevlerde Düzenleme
Yönlendirme yapılandırmasını modüler tutmak için rota gruplarını Route üzerindeki genişletme işlevlerine ayırın:
fun Route.userRoutes() {
route("/users") {
get { /* ... */ }
post { /* ... */ }
get("/{id}") { /* ... */ }
}
}
// In Application module:
routing { userRoutes() }İstek Gövdesini İşleme
İstek gövdesini metin, bayt veya serileştirmeden çıkarılmış bir nesne olarak alın (ContentNegotiation eklentisi gerekir). Türü belirtilmiş serileştirmeden çıkarma için call.receive<T>() kullanın:
post("/users") {
val user = call.receive<UserDto>()
call.respond(HttpStatusCode.Created, user)
}Durum Kodlarıyla Yanıt Verme
Tam denetim için call.respond(status, body) kullanın veya kolaylık sağlayan call.respondText(), call.respondFile(), call.respond(HttpStatusCode.NotFound) yöntemlerinden yararlanın:
get("/users/{id}") {
val user = userRepo.find(call.parameters["id"])
if (user == null) call.respond(HttpStatusCode.NotFound)
else call.respond(user)
}Joker ve Kuyruk Kartı Rotaları
Tek bir joker kesimi için * kullanın; yolun geri kalanını tek bir parametre olarak eşleştirmek için {...} (kuyruk kartı) kullanın:
get("/static/{path...}") {
val filePath = call.parameters.getAll("path")?.joinToString("/") ?: ""
call.respondText("Serving: $filePath")
}Rota Öncelikleri
Ktor, rotaları bildirim sırasına göre değerlendirir. Daha belirgin rotalar jokerlerden önce bildirilmelidir. İki rota eşleştiğinde ilk eşleşme kazanır.
Hızlı Kontrol
Ktor'da birden çok rotayı ortak bir URL öneki altında nasıl gruplarsınız?
Özet: Yönlendirme ve Türü Belirli Parametreler
Önemli çıkarımlar:
- Rotaları
routing { }içindeget,postvb. ile tanımlayın - Yol parametreleri:
{name}—call.parameters["name"]üzerinden erişin - Sorgu parametreleri:
call.request.queryParameters["key"] - Rotaları
route("/prefix") { }ile gruplayın veRouteüzerindeki genişletme işlevlerine ayırın call.receive<T>()ile türü belirli gövdeleri alın (ContentNegotiationgerekir)
Sıkça Sorulan Sorular
“Yönlendirme ve Türlendirilmiş Parametreler” dersi ücretsiz mi?
Evet — “Yönlendirme ve Türlendirilmiş Parametreler” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Kotlin Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Kotlin Academy kursu toplamda 4 dersten oluşur.
“Yönlendirme ve Türlendirilmiş Parametreler” dersinde ne öğreneceğim?
Yol ve sorgu parametreleriyle yönlendirmeler tanımlayın ve bunları route bloklarıyla gruplayın. Kotlin Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Kotlin Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Kotlin Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.
“Yönlendirme ve Türlendirilmiş Parametreler” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Kotlin Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Kotlin Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Ktor Projesi Kurulumu: embeddedServer ve Application Modülleri
- Yönlendirme ve Türlendirilmiş Parametreler
- İçerik Anlaşması ve kotlinx.serialization
- Kimlik Doğrulama Eklentileri: JWT ve Oturum