GraphQL pour Swift : Apollo iOS — client pour iOS et macOS

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

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 =

Recommendations