Apollo iOS : Un client GraphQL puissant pour les applications Swift
Apollo iOS est une bibliothèque moderne et typée pour travailler avec les API GraphQL sur les plateformes Apple : iOS, macOS, tvOS et watchOS. Développée par la société Apollo GraphQL, elle offre aux développeurs des outils pratiques pour exécuter des requêtes, des mutations et des abonnements, en générant automatiquement un code Swift fortement typé basé sur votre schéma GraphQL.
Cette bibliothèque est idéale pour créer des applications mobiles et de bureau modernes nécessitant une gestion flexible des données, une mise en cache et des performances élevées. Apollo iOS élimine le besoin d'analyser manuellement le JSON et garantit une sécurité totale des types au moment de la compilation.
Fonctionnalités principales
- Génération automatique de code — à partir des fichiers .graphql et du schéma du serveur, des modèles de données, requêtes et mutations typés sont créés.
- Mise en cache normalisée — le cache intégré met automatiquement à jour l'interface utilisateur lorsque les données changent, évitant la duplication des objets.
- Prise en charge des abonnements via WebSocket — mises à jour en temps réel pour les chats, notifications et autres données dynamiques.
- Intégration avec SwiftUI et Combine — Publisher asynchrones natifs et ObservableObject pour la programmation réactive.
- Multithreading — toutes les requêtes réseau sont exécutées en arrière-plan, le thread principal reste libre pour l'interface utilisateur.
- Prise en charge du téléchargement de fichiers — travail avec des requêtes multipart pour envoyer des images et des documents.
Installation via Swift Package Manager
Ajoutez Apollo iOS à votre projet via Xcode ou Package.swift :
// Package.swiftdependencies: [ .package(url: "https://github.com/apollographql/apollo-ios.git", from: "1.0.0")]Exemple : configuration du client et exécution d'une requête
Créons une instance du client et exécutons une simple requête GraphQL pour obtenir la liste des utilisateurs :
import Apollo
// 1. Création du clientlet url = URL(string: "https://api.example.com/graphql")!let store = ApolloStore()let client = ApolloClient(url: url, store: store)
// 2. Définition de la requête (fichier Users.graphql)// query GetUsers { users { id name email } }
// 3. Exécution de la requêteclient.fetch(query: GetUsersQuery()) { result in switch result { case .success(let graphQLResult): if let users = graphQLResult.data?.users { for user in users { print("\\(user.name) — \\(user.email)") } } case .failure(let error): print("Erreur : \\(error.localizedDescription)") }}Travail avec les mutations (modification des données)
Exemple de mutation pour créer un nouvel utilisateur :
// mutation CreateUser($name: String!, $email: String!) {// createUser(name: $name, email: $email) { id name email }// }
let mutation = CreateUserMutation(name: "Ivan Petrov", email: "ivan@example.com")
client.perform(mutation: mutation) { result in switch result { case .success(let graphQLResult): if let newUser = graphQLResult.data?.createUser { print("Utilisateur créé : \\(newUser.id)") } case .failure(let error): print("Erreur de création : \\(error)") }}Abonnements (mises à jour en temps réel)
Pour recevoir des données en temps réel, utilisez les abonnements. Un transport WebSocket est requis :
import ApolloWebSocket
let webSocketTransport = WebSocketTransport( request: URLRequest(url: URL(string: "wss://api.example.com/graphql")!))let store = ApolloStore()let client = ApolloClient(networkTransport: webSocketTransport, store: store)
// subscription OnUserAdded { userAdded { id name } }let subscription = Aussi dans la bibliothèque
Jetons JWT en C# (.NET) : guide complet avec exemples
Conan C++ : guide complet avec exemples pratiques
Event Bus et le pattern Observer en C++ : implémentation en C++ moderne