URLSession data(from:) mit async/await
Rufen Sie Daten asynchron aus REST-APIs mit der modernen URLSession-API ab.
URLSession data(from:) mit async/await ist eine kostenlose Swift Academy-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Swift Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Swift Academy-Kurs umfasst insgesamt 4 Lektionen.
Moderne URLSession-API
Swift 5.5+ stellt für URLSession asynchrone Überladungen bereit: data(from:delegate:) setzt die Ausführung aus, statt Callbacks zu verwenden.
let (data, response) = try await URLSession.shared.data(from: URL(string: "https://api.example.com/items")!)Vollständige Fetch-Funktion
Kapseln Sie den Aufruf in einer asynchronen Funktion, die Fehler wirft, damit sie sich kombinieren und testen lässt.
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)
}Aus SwiftUI aufrufen
Rufen Sie asynchrone Funktionen aus dem .task-Modifier oder aus Task { } innerhalb einer Button-Aktion auf.
struct ItemList: View {
@State private var items: [Item] = []
var body: some View {
List(items, id: \.id) { Text($0.name) }
.task { items = (try? await fetchItems()) ?? [] }
}
}URLRequest für benutzerdefinierte Header
Erstellen Sie einen URLRequest mit Methode, Headern und Body und übergeben Sie ihn anschließend an data(for:).
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-Status prüfen
Wandeln Sie die Antwort in HTTPURLResponse um und überprüfen Sie den Statuscode, bevor Sie sie decodieren.
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)Abbrechen
Das Abbrechen des übergeordneten Task bricht automatisch die laufende URLSession-Anfrage ab.
let task = Task {
let items = try await fetchItems()
// ...
}
task.cancel() // cancels URLSession request if in-flightDaten hochladen
Verwenden Sie upload(for:from:), um Binärdaten oder Formulardaten asynchron per POST hochzuladen.
var request = URLRequest(url: uploadURL)
request.httpMethod = "POST"
let (data, _) = try await URLSession.shared.upload(for: request, from: imageData)Dateien herunterladen
download(from:) lädt eine Datei in eine temporäre URL auf der Festplatte herunter, statt sie in den Speicher zu laden.
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)Benutzerdefinierte URLSession-Konfiguration
Erstellen Sie eine benutzerdefinierte Session mit Timeouts, einer Caching-Richtlinie und Unterstützung für Hintergrundausführung.
let config = URLSessionConfiguration.default
config.timeoutIntervalForRequest = 30
config.requestCachePolicy = .reloadIgnoringLocalCacheData
let session = URLSession(configuration: config)async bytes für Streaming
Verwenden Sie bytes(from:), um Antwortdaten zeilenweise zu streamen, ohne die gesamte Antwort zwischenzuspeichern.
let (stream, _) = try await URLSession.shared.bytes(from: url)
for try await line in stream.lines {
print(line)
}Mit URLProtocol testen
Simulieren Sie Netzwerkantworten in Tests, indem Sie URLProtocol ableiten und es in eine benutzerdefinierte Session-Konfiguration injizieren.
class MockURLProtocol: URLProtocol {
static var requestHandler: ((URLRequest) throws -> (HTTPURLResponse, Data))?
// override canInit, startLoading, stopLoading
}Kurze Überprüfung
Welche asynchrone URLSession-Methode lädt eine URL-Antwort direkt in eine temporäre Datei auf der Festplatte herunter?
Zusammenfassung der Lektion
Verwenden Sie URLSession.shared.data(from:) für asynchrone GET-Anfragen, data(for:) mit einem benutzerdefinierten URLRequest für POST/PUT, download(from:) für Dateidownloads und bytes(from:) für Streaming. Überprüfen Sie immer den HTTP-Statuscode, bevor Sie die Antwort decodieren.
Lerne Swift mit einem KI-Tutor — kostenlos
Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.
- Kurse
- 122
- Lektionen
- 409
Häufig gestellte Fragen
Ist die Lektion „URLSession data(from:) mit async/await“ kostenlos?
Ja — der vollständige Text von „URLSession data(from:) mit async/await“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Swift Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Swift Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „URLSession data(from:) mit async/await“?
Rufen Sie Daten asynchron aus REST-APIs mit der modernen URLSession-API ab. Du übst Swift Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Swift Academy zu starten?
Keine Vorkenntnisse erforderlich. Swift Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.
Wie lange dauert die Lektion „URLSession data(from:) mit async/await“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Swift Academy-Lektion Code schreiben und ausführen?
Ja. Jede Swift Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- URLSession data(from:) mit async/await
- Codable: JSON kodieren und dekodieren
- Fehlerbehandlung und HTTP-Statuscodes
- Wiederholungslogik und Hintergrund-URLSession