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.gitVersion: 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 Auch in der Bibliothek
Pistache für C++: Vollständiges Tutorial mit Beispielen
lo für Go: Vollständige Anleitung mit Beispielen
ORM für JavaScript (Node.js): Vergleich von Sequelize, TypeORM, Prisma
HTML-Parsing in C++: Überblick über Bibliotheken und Codebeispiele
Kotlin-Anwendungsüberwachung: Bibliotheken und Tools zur Leistungsverfolgung