GraphQL API mit Swift: Schritt-für-Schritt-Tutorial 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
Here is the translated HTML blog article in German:

Einleitung: Warum GraphQL und Swift?

Die moderne iOS- und macOS-Entwicklung erfordert flexible und effiziente Möglichkeiten zur Interaktion mit dem Server. Herkömmliche REST-APIs führen oft zu den Problemen des Over-Fetching (Abrufen unnötiger Daten) oder Under-Fetching (unzureichende Daten). GraphQL löst diese Probleme, indem es dem Client ermöglicht, in einer einzigen Abfrage nur die Daten anzufordern, die er benötigt.

In diesem Tutorial erstellen wir eine vollwertige Swift-Anwendung, die mit einer GraphQL-API interagiert. Sie lernen, wie Sie das Projekt einrichten, Abfragen und Mutationen ausführen und Fehler behandeln. Als Client verwenden wir Apollo iOS – die beliebteste Bibliothek für die Arbeit mit GraphQL im Apple-Ökosystem.



Projekteinrichtung und Installation von Apollo iOS

Erstellen eines neuen Projekts

Öffnen Sie Xcode und erstellen Sie ein neues iOS- oder macOS-App-Projekt. Nennen wir es GraphQLDemo.



Installation von Apollo iOS über den Swift Package Manager

  1. Gehen Sie in Xcode zu File → Add Packages...
  2. Fügen Sie die Apollo-Repository-URL ein: https://github.com/apollographql/apollo-ios.git
  3. Wählen Sie die neueste stabile Version aus und klicken Sie auf Add Package.
  4. Stellen Sie sicher, dass das Paket zum Ziel Ihrer App hinzugefügt wurde.


Codegenerierung aus dem GraphQL-Schema

Apollo verwendet Codegenerierung, um typsichere Klassen zu erstellen. Dafür benötigen wir eine Schema-Datei (schema.graphqls) und Abfragedateien (.graphql).

Erstellen Sie einen GraphQL-Ordner im Projekt und platzieren Sie dort Folgendes:

  • schema.graphqls – laden Sie das Schema Ihrer API herunter oder verwenden Sie ein öffentliches (z. B. Countries GraphQL API).
  • Queries.graphql – eine Datei mit Ihren Abfragen.

Beispielinhalt von Queries.graphql:

query GetCountries {  countries {    code    name    capital    currency  }}

Fügen Sie nun eine Build Phase für die Codegenerierung hinzu. In Xcode: Target → Build Phases → + → New Run Script Phase. Fügen Sie das Skript ein:

cd "${SRCROOT}/${TARGET_NAME}"./Pods/Apollo/scripts/run-bundled-codegen.sh codegen:generate --target=swift --includes=./**/*.graphql --localSchemaFile=./schema.graphqls ./GraphQL/API.swift

Hinweis: In modernen Versionen von Apollo iOS wird apollo-ios-cli verwendet. Wir empfehlen, die offizielle Dokumentation für aktuelle Anweisungen zu konsultieren.



Ausführen von GraphQL-Abfragen

Initialisieren des Apollo Clients

Erstellen wir einen Manager für die Arbeit mit Apollo. Öffnen Sie die Datei NetworkManager.swift:

import Foundationimport 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) }()}


Ausführen einer Abfrage

Führen wir nun die GetCountries-Abfrage in unserem ViewController aus:

import UIKit

class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() fetchCountries() } private func fetchCountries() { NetworkManager.shared.apollo.fetch(query: GetCountriesQuery()) { result in switch result { case .success(let graphQLResult): if let countries = graphQLResult.data?.countries { for country in countries { print("\\(country.name) - \\(country.capital ?? "N/A")") }

Blogs

Buchempfehlungen