GraphQL in Swift: Vollständiger Leitfaden zur Apollo iOS Bibliothek

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 Bibliothek für die Arbeit mit GraphQL in Swift



Apollo iOS ist eine leistungsstarke und flexible Bibliothek für die Arbeit mit GraphQL im Apple-Ökosystem. Sie bietet Entwicklern von iOS und macOS ein praktisches Werkzeug zur Ausführung von Abfragen, Mutationen und Subscriptions auf GraphQL-Servern. Im Gegensatz zu REST API ermöglicht GraphQL dem Client, nur die benötigten Daten anzufordern, was das Datenvolumen reduziert und die Anwendungsleistung beschleunigt. Apollo iOS unterstützt Swift vollständig, einschließlich moderner Sprachfunktionen wie async/await, Combine und SwiftUI.



Hauptfunktionen von Apollo iOS

  • Codegenerierung: Automatische Erstellung typsicherer Datenmodelle basierend auf dem GraphQL-Schema.
  • Caching: Integrierte Unterstützung für einen normalisierten Cache zur Optimierung wiederholter Abfragen.
  • Swift Concurrency Unterstützung: Vollständige Integration mit async/await für asynchrone Operationen.
  • Subscriptions über WebSocket: Implementierung von Echtzeit-Updates mittels GraphQL subscriptions.
  • Combine und SwiftUI: Möglichkeit der Verwendung mit Apples reaktiven Frameworks.
  • Multiplattform: Funktioniert auf iOS, macOS, tvOS und watchOS.


Installation der Bibliothek

Zur Installation von Apollo iOS verwenden Sie den Swift Package Manager. Fügen Sie das Paket in Xcode über das Menü File → Add Packages hinzu und geben Sie die URL an:

https://github.com/apollographql/apollo-ios.git

Version: letzte stabile (zum Zeitpunkt der Erstellung — 1.15.0).



Einrichtung des Apollo Client

Der erste Schritt ist die Erstellung einer Instanz von ApolloClient mit der URL Ihres GraphQL-Servers. Beispiel einer Basiseinrichtung:

import Apollo

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


Ausführen von Abfragen (Queries)

Apollo iOS generiert Code basierend auf dem GraphQL-Schema. Definieren Sie zunächst die Abfrage in einer .graphql-Datei:

query GetUser($id: ID!) {    user(id: $id) {        id        name        email        posts {            title        }    }}

Nach der Codegenerierung führen Sie die Abfrage aus:

import Apollo

func fetchUser(id: String) async throws -> GetUserQuery.Data.User? { let query = GetUserQuery(id: id) let result = try await NetworkService.shared.apollo.fetch(query: query) return result.data?.user}


Mutationen (Mutation)

Zur Änderung von Daten verwenden Sie Mutationen. Beispiel für die Erstellung eines neuen Beitrags:

mutation CreatePost($title: String!, $content: String!) {    createPost(input: { title: $title, content: $content }) {        id        title        createdAt    }}

Ausführen der Mutation in Swift:

func createPost(title: String, content: String) async throws -> CreatePostMutation.Data.CreatePost? {    let mutation = CreatePostMutation(title: title, content: content)    let result = try await NetworkService.shared.apollo.perform(mutation: mutation)    return result.data?.createPost}


Arbeiten mit Subscriptions (Subscriptions)

Für Echtzeit-Updates verwenden Sie Subscriptions. Beispiel einer Subscription auf neue Nachrichten:

subscription OnNewMessage {    newMessage {        id        text        sender {            name        }    }}

Implementierung in Swift mit Combine:

import Combine

var cancellables = Set<AnyCancellable>()

func subscribeToMessages() { let subscription = OnNewMessageSubscription() NetworkService.shared.apollo.subscribe(subscription: subscription) .sink { completion in print("Subscription

Empfehlungen