Einführung in GraphQL und Swift
GraphQL ist eine moderne Abfragesprache für APIs, die von Facebook entwickelt wurde. Im Gegensatz zu REST, wo Sie eine feste Datenstruktur erhalten, ermöglicht GraphQL dem Client (Ihrer Swift-App), nur die Felder anzufragen, die tatsächlich benötigt werden. Dies ist besonders relevant für mobile Entwickler, die mit iOS und macOS arbeiten: weniger Daten – weniger Traffic, schnellere Ladezeiten, bessere UX.
In diesem Tutorial werden wir durchgehen, wie Sie die GraphQL API in Ihr Swift-Projekt einbinden, grundlegende Abfragen und Mutationen durchführen. Wir werden den offiziellen Client Apollo iOS verwenden – die beliebteste und am besten unterstützte Bibliothek für die Arbeit mit GraphQL im Apple-Ökosystem.
Am Ende dieses Artikels werden Sie in der Lage sein:
- Apollo iOS in einem Xcode-Projekt einzurichten
- Eine GraphQL-Abfrage (Query) zu schreiben und auszuführen
- Eine Mutation (Mutation) zum Ändern von Daten zu senden
- Antworten und Fehler zu verarbeiten
1. Projekteinrichtung und Installation von Apollo iOS
1.1. Neues Projekt erstellen
Öffnen Sie Xcode und erstellen Sie ein neues Projekt (iOS App oder macOS App). Wählen Sie die Sprache Swift und die Oberfläche SwiftUI oder UIKit – das ist nicht entscheidend, da die Netzwerkarbeit nicht vom UI-Framework abhängt.
1.2. Installation über den Swift Package Manager
Apollo iOS lässt sich einfach über SPM einbinden. Gehen Sie zu File → Add Packages... und fügen Sie die URL ein:
https://github.com/apollographql/apollo-ios.gitWählen Sie die neueste stabile Version (zum Zeitpunkt der Erstellung – 1.15.0) und fügen Sie das Paket zu Ihrem Target hinzu.
Installieren Sie auch die Apollo Code Generation CLI – ein Tool zur Generierung von Swift-Typen aus dem GraphQL-Schema. Am einfachsten installieren Sie es über Homebrew:
brew install apollo-ios-cliWenn Homebrew nicht installiert ist, können Sie npm verwenden:
npm install -g apollo-ios-cli1.3. Initialisierung der Konfiguration
Führen Sie im Terminal im Stammverzeichnis Ihres Projekts Folgendes aus:
apollo-ios-cli init --module-name YourAppName --schema-namespace GraphQLDieser Befehl erstellt eine Datei apollo-codegen-config.json und einen Ordner GraphQL, in dem Ihre .graphql-Dateien gespeichert werden.
Fügen Sie nun das Schema des Servers zum Projekt hinzu. Wenn der Server schema.json oder schema.graphqls bereitstellt, kopieren Sie es in den Ordner GraphQL. Wenn nicht, können Sie den integrierten Befehl zum Herunterladen verwenden:
apollo-ios-cli fetch-schema --endpoint=https://your-graphql-endpoint.com/graphql2. Unsere erste GraphQL-Abfrage (Query) schreiben
2.1. .graphql-Datei erstellen
Erstellen Sie im Ordner GraphQL eine Datei Queries.graphql und schreiben Sie eine einfache Abfrage. Nehmen wir an, wir haben eine API zum Abrufen einer Liste von Benutzern:
query GetUsers { users { id name email }}2.2. Generierung von Swift-Code
Starten Sie die Codegenerierung vom Terminal aus:
apollo-ios-cli generateNach erfolgreicher Generierung erscheint im Ordner Sources/API (oder dem von Ihnen angegebenen) eine Datei API.swift mit den Typen GetUsersQuery, GetUsersQuery.Data usw.
2.3. Ausführen der Abfrage aus Swift
Jetzt erstellen wir eine Instanz des Apollo-Clients und führen die Abfrage aus. Schreiben Sie in Ihre ContentView.swift (oder eine beliebige andere Datei):
import Apolloimport SwiftUI
class NetworkManager { static let shared = NetworkManager() private(set) lazy var apollo = ApolloClient(url: URL(string: "https://your-graphql-endpoint.com/graphql")!)}
struct ContentView: View { @State private var users: [GetUsersQuery.Data.User] = [] var body: some View { List(users, id: \\.id) { user in VStack(alignment: .leading) { Text(user.name)