İçerik Anlaşması ve kotlinx.serialization
JSON serileştirmesini yapılandırın ve istek gövdelerini otomatik olarak serileştirmeden çıkarın.
İçerik Anlaşması ve kotlinx.serialization, CoddyKit'te ücretsiz bir Kotlin Academy dersidir. Bu, 4 dersinin 3. 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.
İçerik Anlaşması Nedir?
İçerik anlaşması, istemci ile sunucunun yanıt gövdesinin biçimi üzerinde anlaşmasını sağlayan HTTP mekanizmasıdır. İstemci bir Accept üst bilgisi gönderir; sunucu en uygun eşleşen biçimi seçer. Ktor'un ContentNegotiation eklentisi bu işlemi otomatikleştirir.
Bağımlılıkları Ekleme
ContentNegotiation eklentisini ve kotlinx.serialization JSON dönüştürücüsünü ekleyin:
dependencies {
implementation("io.ktor:ktor-server-content-negotiation:2.3.12")
implementation("io.ktor:ktor-serialization-kotlinx-json:2.3.12")
implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.1")
}ContentNegotiation'ı Yükleme
Eklentiyi bir Application modülüne yükleyin ve JSON dönüştürücüsünü kaydedin:
import io.ktor.server.plugins.contentnegotiation.*
import io.ktor.serialization.kotlinx.json.*
fun Application.configureSerialization() {
install(ContentNegotiation) {
json()
}
}@Serializable Veri Sınıfları
Veri sınıflarınızı kotlinx.serialization içindeki @Serializable ile işaretleyin. Kotlin derleyici eklentisi serileştiriciyi derleme zamanında oluşturur; çalışma zamanında yansıtma gerekmez:
import kotlinx.serialization.Serializable
@Serializable
data class User(val id: Long, val name: String, val email: String)Serileştirilebilir Nesneyle Yanıt Verme
ContentNegotiation yüklendikten sonra herhangi bir @Serializable nesnesini call.respond() işlevine aktarın. Ktor bu nesneyi otomatik olarak JSON'a serileştirir:
get("/users/{id}") {
val user = User(1L, "Alice", "alice@example.com")
call.respond(user) // serialized to JSON
}Serileştirilebilir Nesne Alma
İstek gövdesini bir @Serializable sınıfına serileştirmeden çıkarmak için call.receive<T>() kullanın. Gövde hatalı biçimlendirilmişse Ktor bir ContentTransformationException fırlatır:
post("/users") {
val newUser = call.receive<User>()
call.respond(HttpStatusCode.Created, newUser)
}JSON Yapılandırmasını Özelleştirme
Serileştirmeyi özelleştirmek için Json örneğini json() işlevine aktarın; bilinmeyen anahtarları yok sayabilir, okunaklı biçimlendirme kullanabilir, esnek modu etkinleştirebilirsiniz vb.:
install(ContentNegotiation) {
json(Json {
prettyPrint = true
isLenient = true
ignoreUnknownKeys = true
})
}Birden Çok İçerik Türü
Farklı Accept türlerini desteklemek için birden çok dönüştürücü kaydedin. Ktor, istemcinin Accept üst bilgisiyle eşleşen ilk dönüştürücüyü seçer:
install(ContentNegotiation) {
json()
// xml() with ktor-serialization-kotlinx-xml if needed
}Listeleri ve Haritaları Serileştirme
Koleksiyonları bir yanıt nesnesi içine sarın veya doğrudan call.respond(list) kullanın. Öğe türleri @Serializable olduğu sürece kotlinx.serialization, List<T>, Map<K,V> ve iç içe genel türleri işleyebilir:
get("/users") {
val users = listOf(
User(1, "Alice", "a@example.com"),
User(2, "Bob", "b@example.com")
)
call.respond(users)
}Özel Serileştiriciler
Sahibi olmadığınız türler için (örneğin java.time.Instant) bir KSerializer<T> uygulayın ve bunu @Serializable(with = MySerializer::class) aracılığıyla veya bağlamsal bir serileştirici modülüyle kaydedin:
val module = SerializersModule {
contextual(Instant::class, InstantSerializer)
}
install(ContentNegotiation) {
json(Json { serializersModule = module })
}Serileştirmeden Çıkarma Hatalarını İşleme
call.receive başarısız olduğunda temiz bir hata yanıtı döndürmek için StatusPages eklentisini yükleyin:
install(StatusPages) {
exception<ContentTransformationException> { call, _ ->
call.respond(HttpStatusCode.BadRequest, "Invalid request body")
}
}Hızlı Kontrol
Bir Kotlin veri sınıfının kotlinx.serialization tarafından serileştirilebilmesi için üzerinde hangi ek açıklama bulunmalıdır?
Özet: İçerik Anlaşması ve kotlinx.serialization
Önemli noktalar:
- JSON serileştirme ve serileştirmeden çıkarma işlemlerini otomatikleştirmek için
ContentNegotiation+json()yükleyin - Veri sınıflarını
@Serializableile işaretleyin - Serileştirmek için
call.respond(obj), serileştirmeden çıkarmak içincall.receivekullanın() json()'a aktarılan birJson { ... }örneğiyle özelleştirin- Serileştirmeden çıkarma hatalarını düzgün bir şekilde ele almak için
StatusPageskullanın
Yapay zeka eğitmeniyle Kotlin öğren — ücretsiz
Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.
- Kurslar
- 51
- Dersler
- 203
Sıkça Sorulan Sorular
“İçerik Anlaşması ve kotlinx.serialization” dersi ücretsiz mi?
Evet — “İçerik Anlaşması ve kotlinx.serialization” 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.
“İçerik Anlaşması ve kotlinx.serialization” dersinde ne öğreneceğim?
JSON serileştirmesini yapılandırın ve istek gövdelerini otomatik olarak serileştirmeden çıkarı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 3. dersidir.
“İçerik Anlaşması ve kotlinx.serialization” 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