Utilisation de GraphQL en Swift : bibliothèques Apollo et Relay pour iOS/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

Bibliothèques GraphQL pour Swift (iOS/macOS) : guide complet



GraphQL est un langage de requête moderne pour les API qui permet aux clients de demander uniquement les données dont ils ont besoin. Pour les développeurs Swift créant des applications pour iOS et macOS, il existe des bibliothèques puissantes qui simplifient l'intégration avec les serveurs GraphQL. Dans cet article, nous examinerons deux bibliothèques principales : Apollo iOS et Relay (via des wrappers Swift), et fournirons des exemples de code pratiques.



Qu'est-ce que GraphQL et pourquoi est-il important pour Swift ?



GraphQL résout les problèmes de surcharge et de sous-charge de données qui surviennent souvent avec les API REST. En Swift, cela est particulièrement pertinent pour les applications mobiles, où chaque kilo-octet de données supplémentaire peut affecter les performances et le temps de chargement. Les principaux avantages de GraphQL pour iOS/macOS :



  • Requêtes flexibles — le client décide lui-même quels champs obtenir
  • Typage fort — les schémas GraphQL génèrent automatiquement des types Swift
  • Prise en charge des abonnements — mises à jour en temps réel via WebSocket
  • Point d'entrée unique — un seul endpoint pour toutes les requêtes


Bibliothèque Apollo iOS



Apollo iOS est la bibliothèque GraphQL la plus populaire pour Swift, développée par Apollo GraphQL. Elle fournit un ensemble complet d'outils pour travailler avec GraphQL : de la génération de code à la mise en cache et à la gestion des erreurs.



Installation d'Apollo iOS



Pour l'installation, utilisez Swift Package Manager. Ajoutez la dépendance à votre Package.swift :



// swift-tools-version:5.7import PackageDescription

let package = Package( name: "MyApp", dependencies: [ .package(url: "https://github.com/apollographql/apollo-ios.git", from: "1.0.0") ], targets: [ .target(name: "MyApp", dependencies: [ .product(name: "Apollo", package: "apollo-ios") ]) ])


Vous pouvez également l'installer via CocoaPods ou Carthage, mais SPM est la méthode recommandée.



Configuration du client Apollo



Créez une instance de ApolloClient avec l'URL de votre serveur GraphQL :



import Apollo

class NetworkManager { static let shared = NetworkManager() private(set) lazy var apollo: ApolloClient = { let url = URL(string: "https://api.example.com/graphql")! return ApolloClient(url: url) }()}


Exemple de requête avec Apollo iOS



Supposons que vous ayez un schéma avec le type User et les champs id, name, email. Créons une requête :



import Apollo

// Définir la requête GraphQL (généralement dans un fichier .graphql)let query = """ query GetUser($id: ID!) { user(id: $id) { id name email } }"""

// Exécuter la requêteNetworkManager.shared.apollo.fetch(query: query, variables: ["id": "123"]) { result in switch result { case .success(let graphQLResult): if let user = graphQLResult.data?.user { print("User: \\(user.name), Email: \\(user.email)") } case .failure(let error): print("Error: \\(error)") }}


Remarque : Apollo génère automatiquement des types Swift pour vos requêtes (par exemple, GetUserQuery) si vous utilisez son outil de génération de code. Pour cela, exécutez apollo-ios-cli avec votre schéma.



Mutations et abonnements



Apollo prend en charge les mutations (modification des données) et les abonnements (temps réel). Exemple de mutation :



let mutation = """    mutation UpdateUser($id: ID!, $name: String!) {        updateUser(id: $id, name: $name) {            id            name        }    }"""

NetworkManager.shared.apollo.pe

Recommendations