HTTP-Client für Swift (iOS/macOS): Top-Bibliotheken für die Netzwerkarbeit

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

HTTP-Client für Swift (iOS/macOS): Top-Bibliotheken für die Netzwerkarbeit



Bei der Entwicklung von Apps für iOS und macOS ist die Arbeit mit Netzwerkanfragen eine der zentralen Aufgaben. Swift bietet sowohl integrierte Mittel als auch leistungsstarke Drittanbieter-Bibliotheken. In diesem Artikel betrachten wir die besten HTTP-Clients für Swift, ihre Besonderheiten, Anwendungsbeispiele und Szenarien, in denen jeder von ihnen am effektivsten ist.



1. URLSession – das Standardwerkzeug von Apple



URLSession ist ein in Foundation integriertes Framework für die Ausführung von Netzwerkanfragen. Es ist auf allen Apple-Plattformen verfügbar, erfordert keine Installation zusätzlicher Abhängigkeiten und eignet sich ideal für einfache Projekte.



Vorteile:

  • Vollständige Integration in das Apple-Ökosystem (Hintergrundsitzungen, Unterstützung für URLSessionWebSocketTask).
  • Null Overhead – keine externen Bibliotheken müssen eingebunden werden.
  • Unterstützung für async/await ab Swift 5.5.


Codebeispiel mit async/await (iOS 15+):

import Foundation

func fetchData() async throws -> Data { let url = URL(string: "https://api.example.com/data")! let (data, response) = try await URLSession.shared.data(from: url) guard let httpResponse = response as? HTTPURLResponse, (200...299).contains(httpResponse.statusCode) else { throw URLError(.badServerResponse) } return data}


2. Alamofire – der De-facto-Standard für Netzwerkanfragen



Alamofire ist die beliebteste Drittanbieter-Bibliothek für HTTP-Clients in Swift. Sie ist auf URLSession aufgebaut und bietet eine benutzerfreundliche deklarative API, automatische Fehlerbehandlung, Unterstützung für Parameter-Kodierung und vieles mehr.



Wichtige Funktionen:

  • Request- und Response-Chaining.
  • Automatische JSON-Konvertierung über Codable.
  • Unterstützung für Datei-Upload/Download mit Fortschrittsanzeige.
  • Integrierte Netzwerkerreichbarkeit (Network Reachability).


Beispiel einer einfachen GET-Anfrage:

import Alamofire

AF.request("https://jsonplaceholder.typicode.com/posts/1") .responseDecodable(of: Post.self) { response in switch response.result { case .success(let post): print(post.title) case .failure(let error): print(error.localizedDescription) } }


3. Moya – Abstraktion über Alamofire für sauberen Code



Moya ist ein Aufsatz auf Alamofire, der eine strenge Typisierung von API-Endpunkten über Aufzählungen (enums) bietet. Dies vermeidet magische Zeichenketten und vereinfacht das Testen.



Besonderheiten:

  • Jeder Endpunkt ist ein separater case in einem enum.
  • Integrierte Unterstützung für Stubs (Stubs) zum Testen.
  • Integration mit RxSwift und Combine.


Beispiel für die Deklaration eines Providers:

import Moya

enum GitHubAPI { case userRepos(username: String) case repoDetails(owner: String, repo: String)}

extension GitHubAPI: TargetType { var baseURL: URL { URL(string: "https://api.github.com")! } var path: String { switch self { case .userRepos(let username): return "/users/\\(username)/repos" case .repoDetails(let owner, let repo): return "/repos/\\(owner)/\\(repo)" } } var method: Moya.Method { .get } var task: Task { .requestPlain } var headers: [String: String]? { ["Accept": "application/vnd.github.v3+json"] }}


4. Kitura-Net – HTTP-Client von IBM für serverseitiges Swift



Kitura-Net ist Teil des Kitura-Ökosystems, das auf die Serverentwicklung mit Swift ausgerichtet ist. Es kann jedoch auch in Client-Anwendungen für macOS verwendet werden. Es zeichnet sich durch ereignisbasierte Asynchronität und minimalen Speicherverbrauch aus.



Wann wählen:

  • Für serverseitige

Empfehlungen