0Pricing
Swift Academy · Ders

İçerik ve JSON Kodlama

İstek ve yanıt gövdelerinin kodunu çözün ve kodlayın.

İçerik ve JSON Kodlama, CoddyKit'te ücretsiz bir Swift 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, Swift Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Swift Academy kursu toplamda 4 dersten oluşur.

Content Protokolü

HTTP üzerinden taşınan Vapor modelleri Content protokolüne uyar. Content, Swift'in Codable protokolü üzerine kuruludur; istek gövdelerinin kodunun çözülmesini ve yanıtların otomatik olarak kodlanmasını sağlar.

import Vapor

struct Todo: Content {
    var id: Int?
    var title: String
    var done: Bool
}

Yanıtı JSON Olarak Kodlama

Bir işleyiciden herhangi bir Content değeri döndürdüğünüzde Vapor bunu JSON'a kodlar ve doğru Content-Type üst bilgisini sizin için ayarlar.

app.get("todo") { req -> Todo in
    Todo(id: 1, title: "Learn Vapor", done: false)
}

İstek Gövdesinin Kodunu Çözme

Gelen bir istekteki türü belirlenmiş yükü req.content.decode(_:) ile okuyun. Vapor, Content-Type değerini inceler ve JSON'u (veya form verilerini) buna göre ayrıştırır.

app.post("todo") { req -> Todo in
    let incoming = try req.content.decode(Todo.self)
    return incoming
}

İçerik Olarak Diziler

Content türlerinden oluşan koleksiyonlar otomatik olarak JSON dizilerine kodlanır. [Todo] döndürdüğünüzde istemci bir JSON listesi alır.

app.get("todos") { req -> [Todo] in
    [Todo(id: 1, title: "A", done: false),
     Todo(id: 2, title: "B", done: true)]
}

Özel Kodlama Anahtarları

Content, Codable olduğundan Swift özellik adlarını CodingKeys kullanarak farklı JSON anahtarlarıyla eşleyebilirsiniz. Bu, snake_case kullanan API'ler için yararlıdır.

struct User: Content {
    var firstName: String
    enum CodingKeys: String, CodingKey {
        case firstName = "first_name"
    }
}

JSON Kodlayıcısını Yapılandırma

Örneğin tüm anahtarları snake_case biçimine dönüştürmek veya tarihleri ISO-8601 biçiminde biçimlendirmek için ContentConfiguration aracılığıyla genel bir kodlama stratejisi ayarlayabilirsiniz.

let encoder = JSONEncoder()
encoder.keyEncodingStrategy = .convertToSnakeCase
encoder.dateEncodingStrategy = .iso8601
ContentConfiguration.global.use(encoder: encoder, for: .json)

Kodu Çözülmüş İçeriği Doğrulama

Vapor'ın Validatable protokolü doğrulama kuralları tanımlamanızı sağlar. Hatalı girdiyi anlaşılır bir 400 hatasıyla reddetmek için kodu çözmeden önce try Todo.validate(content: req) çağrısını yapın.

extension Todo: Validatable {
    static func validations(_ v: inout Validations) {
        v.add("title", as: String.self, is: !.empty)
    }
}

Bir İşleyicide Doğrulama Kullanma

Önce doğrulayın, ardından kodu çözün. Doğrulama başarısız olursa Vapor otomatik olarak hata fırlatır ve istemci açıklayıcı bir hata yanıtı alır.

app.post("todo") { req -> Todo in
    try Todo.validate(content: req)
    return try req.content.decode(Todo.self)
}

İstek ve Yanıt DTO'larını Ayırma

İyi bir uygulama, girdi ve çıktı için ayrı türler kullanmaktır. Örneğin istekler için kimliği olmayan bir CreateTodo, yanıtlar içinse tam bir Todo kullanabilirsiniz. Bu, API'nizi dahili modellerden bağımsızlaştırır.

struct CreateTodo: Content {
    var title: String
}
struct TodoResponse: Content {
    var id: Int
    var title: String
}

Sorgu Dizelerini Kodlama

Aynı Content mekanizması, sorgu dizelerinin req.query.decode(_:) aracılığıyla bir yapıya kodunun çözülmesini sağlar; bu mekanizma filtre ve sayfalama parametreleri için idealdir.

struct Page: Content {
    var page: Int?
    var size: Int?
}
app.get("items") { req -> String in
    let p = try req.query.decode(Page.self)
    return "page=" + String(p.page ?? 1)
}

İçerikle Özel Durum Döndürme

Hem gövdeyi hem de durumu denetlemek için bir Response oluşturup içeriği bunun içine kodlayın veya demet benzeri bir yapı döndürün. Aşağıdaki örnek, JSON gövdesiyle birlikte 201 Created durumunu ayarlar.

app.post("todo") { req -> Response in
    let todo = try req.content.decode(Todo.self)
    let res = Response(status: .created)
    try res.content.encode(todo)
    return res
}

Kısa Kontrol: Content ve JSON

Kodlama bilginizi sınayın.

Özet: Content ve JSON Kodlama

Verilerin Vapor'da ağ üzerinden nasıl aktarıldığını öğrendiniz:

  • Modelleri ( Codable üzerine kurulu) Content protokolüne uydurun.
  • JSON kodlamak için içeriği döndürün; gövdeleri okumak için req.content.decode kullanın.
  • Anahtarları ve tarihleri CodingKeys ile ContentConfiguration üzerinden özelleştirin.
  • Girdiyi Validatable ile doğrulayın ve ayrı istek/yanıt DTO'ları kullanmayı değerlendirin.

Sıkça Sorulan Sorular

“İçerik ve JSON Kodlama” dersi ücretsiz mi?

Evet — “İçerik ve JSON Kodlama” 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 Swift Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Swift Academy kursu toplamda 4 dersten oluşur.

“İçerik ve JSON Kodlama” dersinde ne öğreneceğim?

İstek ve yanıt gövdelerinin kodunu çözün ve kodlayın. Swift 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.

Swift Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Swift 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.

“İçerik ve JSON Kodlama” 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 Swift Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Swift 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

  1. Yönlendirme ve İstek İşleme
  2. İçerik ve JSON Kodlama
  3. Fluent ORM ve Modeller
  4. Ara Katman Yazılımı ve Kimlik Doğrulama
← Swift Academy Sayfasına Dön