Verwendung von GraphQL in Swift: Die Bibliotheken Apollo und Relay für iOS/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

GraphQL-Bibliotheken für Swift (iOS/macOS): Vollständiger Leitfaden



GraphQL ist eine moderne Abfragesprache für APIs, die es Clients ermöglicht, nur die Daten anzufordern, die sie benötigen. Für Swift-Entwickler, die Anwendungen für iOS und macOS erstellen, gibt es leistungsstarke Bibliotheken, die die Integration mit GraphQL-Servern vereinfachen. In diesem Artikel betrachten wir zwei Hauptbibliotheken: Apollo iOS und Relay (über Swift-Wrapper) und geben praktische Codebeispiele.



Was ist GraphQL und warum ist es wichtig für Swift?



GraphQL löst das Problem des Overfetching und Underfetching von Daten, das bei der Verwendung von REST-APIs häufig auftritt. In Swift ist dies besonders relevant für mobile Anwendungen, wo jedes zusätzliche Kilobyte Daten die Leistung und Ladezeit beeinflussen kann. Die Hauptvorteile von GraphQL für iOS/macOS sind:



  • Flexible Abfragen — der Client entscheidet selbst, welche Felder abgerufen werden
  • Starke Typisierung — GraphQL-Schemata generieren automatisch Swift-Typen
  • Unterstützung für Abonnements — Echtzeit-Updates über WebSocket
  • Einheitlicher Einstiegspunkt — ein Endpoint für alle Abfragen


Die Apollo iOS Bibliothek



Apollo iOS ist die beliebteste GraphQL-Bibliothek für Swift, entwickelt von Apollo GraphQL. Sie bietet einen vollständigen Satz von Werkzeugen für die Arbeit mit GraphQL: von der Codegenerierung bis zum Caching und der Fehlerbehandlung.



Installation von Apollo iOS



Für die Installation verwenden Sie den Swift Package Manager. Fügen Sie die Abhängigkeit zu Ihrer Package.swift hinzu:



// swift-tools-version:5.7import PackageDescription

let package = Package( name: "MyApp", dependencies: [ .package(url: "https://github.com/apollographql/apollo-ios.git", from: "1.0.0") ], targets: [ .target(name: "MyApp", dependencies: [ .product(name: "Apollo", package: "apollo-ios") ]) ])


Sie können es auch über CocoaPods oder Carthage installieren, aber SPM ist die empfohlene Methode.



Einrichtung des Apollo-Clients



Erstellen Sie eine Instanz von ApolloClient mit der URL Ihres GraphQL-Servers:



import Apollo

class NetworkManager { static let shared = NetworkManager() private(set) lazy var apollo: ApolloClient = { let url = URL(string: "https://api.example.com/graphql")! return ApolloClient(url: url) }()}


Beispiel einer Abfrage mit Apollo iOS



Angenommen, Sie haben ein Schema mit dem Typ User und den Feldern id, name, email. Erstellen wir eine Abfrage:



import Apollo

// Definieren der GraphQL-Abfrage (normalerweise in einer .graphql-Datei)let query = """ query GetUser($id: ID!) { user(id: $id) { id name email } }"""

// Ausführen der AbfrageNetworkManager.shared.apollo.fetch(query: query, variables: ["id": "123"]) { result in switch result { case .success(let graphQLResult): if let user = graphQLResult.data?.user { print("User: \\(user.name), Email: \\(user.email)") } case .failure(let error): print("Error: \\(error)") }}


Beachten Sie: Apollo generiert automatisch Swift-Typen für Ihre Abfragen (z.B. GetUserQuery), wenn Sie das Codegenerierungstool verwenden. Führen Sie dazu apollo-ios-cli mit Ihrem Schema aus.



Mutationen und Abonnements



Apollo unterstützt Mutationen (Datenänderungen) und Abonnements (Echtzeit). Beispiel einer Mutation:



let mutation = """    mutation UpdateUser($id: ID!, $name: String!) {        updateUser(id: $id, name: $name) {            id            name        }    }"""

NetworkManager.shared.apollo.pe

Empfehlungen