Ktor Projesi Kurulumu: embeddedServer ve Application Modülleri
Bir Ktor uygulamasını başlatın, Netty'yi yapılandırın ve uygulama modüllerini tanımlayın.
Ktor Projesi Kurulumu: embeddedServer ve Application Modülleri, CoddyKit'te ücretsiz bir Kotlin Academy dersidir. Bu, 4 dersinin 1. 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 Nedir?
Ktor, JetBrains'in sunucu ve istemci oluşturmaya yönelik eşzamansız Kotlin çatısıdır. Korutin önceliklidir, eklenti tabanlıdır ve sihirli davranış içermez: ihtiyacınız olan her özellik açıkça yüklenir. Ktor uygulamaları, DI kapsayıcısı gerektirmeyen sıradan Kotlin programlarıdır.
Ktor Bağımlılıklarını Ekleme
Temel sunucu altyapısını (en yaygın seçenek Netty'dir) ve temel Ktor sunucu kitaplığını build.gradle.kts dosyanıza ekleyin:
dependencies {
implementation("io.ktor:ktor-server-core:2.3.12")
implementation("io.ktor:ktor-server-netty:2.3.12")
implementation("ch.qos.logback:logback-classic:1.5.6") // logging
}embeddedServer: Minimal Başlangıç Noktası
Ktor sunucusu başlatmanın en basit yolu embeddedServer kullanmaktır. Altyapı fabrikasını, bağlantı noktasını ve bir yapılandırma bloğunu aktarın:
import io.ktor.server.engine.*
import io.ktor.server.netty.*
import io.ktor.server.routing.*
import io.ktor.server.response.*
fun main() {
embeddedServer(Netty, port = 8080) {
routing {
get("/") { call.respondText("Hello, Ktor!") }
}
}.start(wait = true)
}Uygulama Modülleri
Daha büyük projelerde yapılandırmayı modüllere ayırın — Application üzerindeki genişletme işlevlerine. Bir modül eklentileri yükler ve rotaları kaydeder. Bu, kod tabanının daha kolay sınanabilir ve birleştirilebilir olmasını sağlar:
fun Application.configureRouting() {
routing {
get("/health") { call.respondText("OK") }
}
}
fun Application.configureSerialization() {
install(ContentNegotiation) { json() }
}main'den Modülleri Çağırma
Modüllerinizi birleştirmek için işlevlerini embeddedServer bloğunun içinde çağırın:
fun main() {
embeddedServer(Netty, port = 8080) {
configureRouting()
configureSerialization()
configureSecurity()
}.start(wait = true)
}application.conf (HOCON Yapılandırması)
embeddedServer kullanımına alternatif olarak bir application.conf dosyası (HOCON biçiminde) kullanabilir ve EngineMain aracılığıyla çalıştırabilirsiniz. Yapılandırma dosyası giriş modülünü ve bağlantı noktasını belirtir:
# application.conf
ktor {
deployment { port = 8080 }
application {
modules = [ com.example.ApplicationKt.module ]
}
}EngineMain ve embeddedServer
Kod üzerinde tam denetim istediğinizde (sınama ve basit uygulamalar için idealdir) embeddedServer kullanın. Yeniden derleme yapmadan ortama özel yapılandırma istediğinizde EngineMain + application.conf kullanın.
ApplicationCall Nesnesi
Her istek işleyicisi bir ApplicationCall alır. Bu nesne isteğe (call.request), yanıta (call.response) ve call.respondText() ile call.respond() gibi yardımcılara erişim sağlar.
Ortam ve Günlükleme
Bir modül içindeki ortam yapılandırmasına environment.config üzerinden erişin. Günlükleme SLF4J kullanır; günlük düzeylerini ve çıktı biçimini yapılandırmak için src/main/resources/ dizinine bir logback.xml ekleyin.
Geliştirme Sırasında Sıcak Yeniden Yükleme
Ktor, development modu bayrağı aracılığıyla geliştirme sırasında sıcak yeniden yüklemeyi destekler. Bunu application.conf içinde veya program aracılığıyla etkinleştirin: embeddedServer(Netty, port = 8080, developmentMode = true) { ... }.
Proje Yapısı Kuralı
Tipik bir Ktor proje düzeni:
Application.kt—main()başlangıç noktasıplugins/— her Application genişletme işlevi için bir dosya (Yönlendirme, Serileştirme, Kimlik Doğrulama vb.)routes/— alana göre gruplanmış rota tanımlarımodels/— veri sınıfları
Hızlı Kontrol
Ktor'da bir uygulama modülü işlevinin amacı nedir?
Özet: Ktor Projesi Kurulumu
Önemli çıkarımlar:
embeddedServer(Engine, port) { ... }.start(wait=true)en basit başlangıç noktasıdır- Yapılandırmayı
Applicationüzerindeki modül genişletme işlevlerine ayırın - Harici yapılandırma için
EngineMain+application.confkullanın - Her istek işleyicisi, istek ve yanıta erişmek için
ApplicationCallile çalışır - Sürdürülebilirlik için rotaları bir
routes/paketinde gruplayın
Sıkça Sorulan Sorular
“Ktor Projesi Kurulumu: embeddedServer ve Application Modülleri” dersi ücretsiz mi?
Evet — “Ktor Projesi Kurulumu: embeddedServer ve Application Modülleri” 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.
“Ktor Projesi Kurulumu: embeddedServer ve Application Modülleri” dersinde ne öğreneceğim?
Bir Ktor uygulamasını başlatın, Netty'yi yapılandırın ve uygulama modüllerini tanımlayı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 1. dersidir.
“Ktor Projesi Kurulumu: embeddedServer ve Application Modülleri” 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