0Pricing
Swift Academy · Ders

async/await ile URLSession data(from:)

Modern URLSession API'sini kullanarak REST API'lerinden eşzamansız veri alın.

async/await ile URLSession data(from:), CoddyKit'te ücretsiz bir Swift 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, 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.

Modern URLSession API'si

Swift 5.5 ve üzeri, URLSession'a geri çağrılar kullanmak yerine askıya alınan eşzamansız aşırı yüklemeler ekler: data(from:delegate:).

let (data, response) = try await URLSession.shared.data(from: URL(string: "https://api.example.com/items")!)

Tam Getirme İşlevi

Çağrıyı birleştirilebilir ve sınanabilir hâle getirmek için eşzamansız, hata fırlatan bir işleve sarın.

func fetchItems() async throws -> [Item] {
  let url = URL(string: "https://api.example.com/items")!
  let (data, _) = try await URLSession.shared.data(from: url)
  return try JSONDecoder().decode([Item].self, from: data)
}

SwiftUI'dan Çağırma

Eşzamansız işlevleri .task değiştiricisinden veya bir düğme eylemi içindeki Task { } yapısından çağırın.

struct ItemList: View {
  @State private var items: [Item] = []
  var body: some View {
    List(items, id: \.id) { Text($0.name) }
      .task { items = (try? await fetchItems()) ?? [] }
  }
}

Özel Üstbilgiler için URLRequest

Yöntem, üstbilgiler ve body içeren bir URLRequest oluşturun, ardından bunu data(for:) öğesine aktarın.

var request = URLRequest(url: URL(string: "https://api.example.com/login")!)
request.httpMethod = "POST"
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.httpBody = try? JSONEncoder().encode(LoginBody(email: "a@b.com", password: "pass"))
let (data, _) = try await URLSession.shared.data(for: request)

HTTP Durumunu Denetleme

Yanıtı HTTPURLResponse türüne dönüştürün ve kodunu çözmeden önce durum kodunu doğrulayın.

let (data, response) = try await URLSession.shared.data(from: url)
guard let http = response as? HTTPURLResponse, http.statusCode == 200 else {
  throw URLError(.badServerResponse)
}
let item = try JSONDecoder().decode(Item.self, from: data)

İptal Etme

Üst Task yapısının iptal edilmesi, devam eden URLSession isteğini otomatik olarak iptal eder.

let task = Task {
  let items = try await fetchItems()
  // ...
}
task.cancel() // cancels URLSession request if in-flight

Veri Yükleme

İkili verileri veya form yüklemelerini eşzamansız olarak POST etmek için upload(for:from:) kullanın.

var request = URLRequest(url: uploadURL)
request.httpMethod = "POST"
let (data, _) = try await URLSession.shared.upload(for: request, from: imageData)

Dosya İndirme

download(from:), dosyayı belleğe almak yerine diskteki geçici bir URL'ye indirir.

let (fileURL, _) = try await URLSession.shared.download(from: remoteURL)
let destURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0].appendingPathComponent("file.pdf")
try FileManager.default.moveItem(at: fileURL, to: destURL)

Özel URLSession Yapılandırması

Zaman aşımları, önbellekleme ilkesi ve arka plan desteği içeren özel bir oturum oluşturun.

let config = URLSessionConfiguration.default
config.timeoutIntervalForRequest = 30
config.requestCachePolicy = .reloadIgnoringLocalCacheData
let session = URLSession(configuration: config)

Akış için eşzamansız bytes

Yanıtın tamamını arabelleğe almadan yanıt verilerini satır satır akış hâlinde almak için bytes(from:) kullanın.

let (stream, _) = try await URLSession.shared.bytes(from: url)
for try await line in stream.lines {
  print(line)
}

URLProtocol ile Sınama

Özel bir oturum yapılandırmasına alt sınıf olarak URLProtocol ekleyip enjekte ederek sınamalarda ağ yanıtlarını taklit edin.

class MockURLProtocol: URLProtocol {
  static var requestHandler: ((URLRequest) throws -> (HTTPURLResponse, Data))?
  // override canInit, startLoading, stopLoading
}

Hızlı Kontrol

Bir URL yanıtını doğrudan diskteki geçici bir dosyaya indiren eşzamansız URLSession yöntemi hangisidir?

Ders Özeti

Eşzamansız GET istekleri için URLSession.shared.data(from:), özel URLRequest ile POST/PUT için data(for:), dosya indirmeleri için download(from:) ve akış için bytes(from:) kullanın. Kodunu çözmeden önce HTTP durum kodunu her zaman denetleyin.

Sıkça Sorulan Sorular

“async/await ile URLSession data(from:)” dersi ücretsiz mi?

Evet — “async/await ile URLSession data(from:)” 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.

“async/await ile URLSession data(from:)” dersinde ne öğreneceğim?

Modern URLSession API'sini kullanarak REST API'lerinden eşzamansız veri alı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 1. dersidir.

“async/await ile URLSession data(from:)” 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. async/await ile URLSession data(from:)
  2. Codable: JSON Kodlama ve Kod Çözme
  3. Hata İşleme ve HTTP Durum Kodları
  4. Yeniden Deneme Mantığı ve Arka Plan URLSession
← Swift Academy Sayfasına Dön