GraphQL für Swift: Apollo iOS — Client für iOS und macOS

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

Apollo iOS: Leistungsstarker GraphQL Client für Swift-Anwendungen



Apollo iOS ist eine moderne, typsichere Bibliothek für die Arbeit mit GraphQL APIs auf Apple-Plattformen: iOS, macOS, tvOS und watchOS. Entwickelt von Apollo GraphQL, bietet sie Entwicklern praktische Werkzeuge zur Ausführung von Abfragen, Mutationen und Subscriptions und generiert automatisch streng typisierten Swift-Code basierend auf Ihrem GraphQL-Schema.



Die Bibliothek eignet sich ideal für die Entwicklung moderner mobiler und Desktop-Anwendungen, die flexible Datenverarbeitung, Caching und hohe Leistung erfordern. Apollo iOS eliminiert manuelles JSON-Parsing und gewährleistet vollständige Typsicherheit zur Kompilierzeit.



Hauptfunktionen

  • Automatische Codegenerierung — basierend auf .graphql-Dateien und dem Serverschema werden typisierte Datenmodelle, Abfragen und Mutationen erstellt.
  • Normalisiertes Caching — der integrierte Cache aktualisiert die UI automatisch bei Datenänderungen und vermeidet Objektduplikate.
  • Unterstützung für Subscriptions über WebSocket — Echtzeit-Updates für Chats, Benachrichtigungen und andere dynamische Daten.
  • Integration mit SwiftUI und Combine — native asynchrone Publisher und ObservableObject für reaktive Programmierung.
  • Multithreading — alle Netzwerkanfragen werden im Hintergrund ausgeführt, der Hauptthread bleibt für die UI frei.
  • Unterstützung für Datei-Uploads — Arbeit mit Multipart-Anfragen zum Senden von Bildern und Dokumenten.


Installation über Swift Package Manager

Fügen Sie Apollo iOS über Xcode oder Package.swift zu Ihrem Projekt hinzu:

// Package.swiftdependencies: [    .package(url: "https://github.com/apollographql/apollo-ios.git",              from: "1.0.0")]


Beispiel: Client einrichten und Abfrage ausführen

Wir erstellen eine Client-Instanz und führen eine einfache GraphQL-Abfrage zum Abrufen einer Benutzerliste aus:

import Apollo

// 1. Client erstellenlet url = URL(string: "https://api.example.com/graphql")!let store = ApolloStore()let client = ApolloClient(url: url, store: store)

// 2. Abfrage definieren (Datei Users.graphql)// query GetUsers { users { id name email } }

// 3. Abfrage ausführenclient.fetch(query: GetUsersQuery()) { result in switch result { case .success(let graphQLResult): if let users = graphQLResult.data?.users { for user in users { print("\\(user.name) — \\(user.email)") } } case .failure(let error): print("Fehler: \\(error.localizedDescription)") }}


Arbeit mit Mutationen (Daten ändern)

Beispiel einer Mutation zum Erstellen eines neuen Benutzers:

// mutation CreateUser($name: String!, $email: String!) {//   createUser(name: $name, email: $email) { id name email }// }

let mutation = CreateUserMutation(name: "Ivan Petrov", email: "ivan@example.com")

client.perform(mutation: mutation) { result in switch result { case .success(let graphQLResult): if let newUser = graphQLResult.data?.createUser { print("Benutzer erstellt: \\(newUser.id)") } case .failure(let error): print("Fehler beim Erstellen: \\(error)") }}


Subscriptions (Echtzeit-Updates)

Für Echtzeitdaten verwenden Sie Subscriptions. Ein WebSocket-Transport ist erforderlich:

import ApolloWebSocket

let webSocketTransport = WebSocketTransport( request: URLRequest(url: URL(string: "wss://api.example.com/graphql")!))let store = ApolloStore()let client = ApolloClient(networkTransport: webSocketTransport, store: store)

// subscription OnUserAdded { userAdded { id name } }let subscription =

Empfehlungen