GraphQL API mit Swift: Schritt-für-Schritt-Tutorial
GraphQL wird aufgrund seiner Flexibilität und Effizienz zum Standard für moderne APIs. Im Gegensatz zu REST, wo Sie eine feste Datenstruktur erhalten, ermöglicht GraphQL, nur das anzufragen, was benötigt wird. In diesem Tutorial werden wir behandeln, wie man die GraphQL API in Swift-Anwendungen für iOS und macOS integriert, unter Verwendung der Bibliothek Apollo iOS. Sie lernen, Abfragen und Mutationen durchzuführen sowie Fehler zu behandeln.
1. Projekteinrichtung und Installation von Apollo iOS
Der erste Schritt besteht darin, ein neues Xcode-Projekt zu erstellen und die Abhängigkeit Apollo iOS über den Swift Package Manager (SPM) hinzuzufügen.
Schritt 1.1: Projekt erstellen
Öffnen Sie Xcode und erstellen Sie ein neues Projekt (iOS App oder macOS App). Wählen Sie SwiftUI oder UIKit – unser Beispiel wird mit beiden Plattformen funktionieren.
Schritt 1.2: Apollo iOS über SPM installieren
- Gehen Sie in Xcode zu
File → Add Packages... - Fügen Sie die Repository-URL ein:
https://github.com/apollographql/apollo-ios.git - Wählen Sie die neueste stabile Version (z.B. 1.15.0) und klicken Sie auf Add Package.
- Wählen Sie im erscheinenden Fenster Ihr Projekt aus und fügen Sie das Paket Apollo hinzu.
Schritt 1.3: Schema und Code generieren
Apollo iOS verwendet Codegenerierung basierend auf dem GraphQL-Schema. Laden Sie zunächst das Schema Ihrer API herunter (normalerweise über eine introspection query). Für den Test verwenden wir die öffentliche API Countries GraphQL (https://countries.trevorblades.com).
Erstellen Sie eine Datei schema.graphqls im Stammverzeichnis des Projekts und fügen Sie das Schema ein (es kann über GraphQL Playground bezogen werden). Fügen Sie dann ein Generierungsskript in Build Phases hinzu:
// Beispielskript in Build Phasesif which apollo-ios-cli >/dev/null; then apollo-ios-cli generateelse echo "Apollo CLI ist nicht installiert. Installieren Sie es mit: brew install apollo-ios-cli"fiInstallieren Sie die CLI über Homebrew: brew install apollo-ios-cli.
2. Ausführen einer einfachen GraphQL-Abfrage
Nachdem das Projekt eingerichtet ist, schreiben wir Code zum Ausführen einer Abfrage. Wir werden eine Liste von Ländern mit ihren Codes und Namen abrufen.
Schritt 2.1: GraphQL-Abfrage erstellen
Erstellen Sie im Projektordner eine Datei Countries.graphql und fügen Sie die Abfrage hinzu:
query GetCountries { countries { code name }}Führen Sie anschließend die Codegenerierung aus (über Build oder Terminal). Apollo erstellt die Strukturen GetCountriesQuery und GetCountriesQuery.Data.
Schritt 2.2: ApolloClient konfigurieren
Erstellen Sie einen Netzwerk-Manager:
import Apollo
class NetworkManager { static let shared = NetworkManager() private(set) lazy var apollo: ApolloClient = { let url = URL(string: "https://countries.trevorblades.com")! return ApolloClient(url: url) }()}Schritt 2.3: Abfrage in SwiftUI ausführen
Beispiel für SwiftUI:
import SwiftUI
struct ContentView: View { @State private var countries: [GetCountriesQuery.Data.Country] = [] var body: some View { List(countries, id: \\.code) { country in Text("\\(country.name) (\\(country.code))") } .onAppear { loadCountries() } } func loadCountries() { NetworkManager.shared.apollo.fetch(query: GetCountriesQuery()) { result in switch result { case .success(let graphQLResult): if let countries = graphQLResult.data?.countries { self.countries = countries } case .failure(let error): print("Abfragefehler: \\(error.localizedDescription)") } } }}Starten Sie die Anwendung. Wenn alles funktioniert,