CodeBlanks Logo Icon CodeBlanks

Ktor server

Ktor server ile HTTP sunucusu öğrenirsin.

Ktor server nedir?

Ktor server, Kotlin ile HTTP sunucusu yazmak için kullanılan coroutine tabanlı bir çerçevedir. Netty, Jetty veya CIO gibi engine'lerle çalışır.

Bir sunucu embeddedServer fonksiyonu ile başlatılır. Örnek: embeddedServer(Netty, port = 8080) { ... }.start(wait = true). Bu blok içinde routing ve plugin'ler tanımlanır. Coroutine tabanlı olduğu için her istek bir coroutine olarak işlenir; thread başına bir istek modelinden farklıdır. Bu derste temel sunucu iskeletini kuracaksın.

Engine seçimi

Ktor sunucusu bir engine üzerinden çalışır. JVM'de yaygın seçimler Netty, Jetty ve CIO'dur.

Engine, soket yönetimi ve istek dağıtımından sorumludur. embeddedServer(Netty, port = 8080) { ... } çağrısında engine ilk parametre olarak verilir. Netty, üretim için yaygın ve olgun bir seçimdir. CIO Kotlin ile yazılmıştır; ek bağımlılık gerektirmez. Engine seçimi performans ve bağımlılık ihtiyacına göre yapılır.

Uygulama Sunucu iskeletini kur

val server = embeddedServer(Netty, port = 8080) { } ile bir sunucu tanımla. println("Sunucu hazır") yazdır.

Başlangıç kodu

Main.kt
// Ktor sunucu
// buraya yaz
import io.ktor.server.application.*
import io.ktor.server.engine.*
import io.ktor.server.netty.*

fun main() {
    
}

Örnek çözüm

Main.kt
fun main() {
    val server = embeddedServer(Netty, port = 8080) {
    }
    println("Sunucu hazır")
}

Beklenen çıktı

Sunucu hazır

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Ktor server hangi yapı ile başlatılır?

  • main()
  • HttpClient()
  • embeddedServer() Doğru cevap
  • runBlocking()

Açıklama: embeddedServer fonksiyonu sunucuyu başlatır.

2 embeddedServer çağrısını tamamla

Soru
val server = ____(Netty, port = 8080) {
    
}
Cevap
val server = embeddedServer(Netty, port = 8080) {
    
}

Açıklama: embeddedServer ile sunucu başlatılır.

3 Ktor server parçalarını eşle

Kavram Anlamı
embeddedServer Sunucuyu başlatır
Netty Engine
port Bağlantı noktası
routing Yol tanımı

İleri seviye bölümündeki tüm dersler