Introduction à GraphQL et Swift
GraphQL est un langage de requêtes moderne pour les API, développé par Facebook. Contrairement à REST, où vous obtenez une structure de données fixe, GraphQL permet au client (votre application en Swift) de demander uniquement les champs réellement nécessaires. Cela est particulièrement pertinent pour les développeurs mobiles travaillant avec iOS et macOS : moins de données signifie moins de trafic, un chargement plus rapide et une meilleure expérience utilisateur.
Dans ce tutoriel, nous allons voir comment connecter une API GraphQL à votre projet Swift, effectuer des requêtes de base et des mutations. Nous utiliserons le client officiel Apollo iOS — la bibliothèque la plus populaire et la mieux prise en charge pour travailler avec GraphQL dans l'écosystème Apple.
À la fin de cet article, vous serez capable de :
- Configurer Apollo iOS dans un projet Xcode
- Écrire et exécuter une requête GraphQL (Query)
- Envoyer une mutation (Mutation) pour modifier des données
- Gérer les réponses et les erreurs
1. Configuration du projet et installation d'Apollo iOS
1.1. Création d'un nouveau projet
Ouvrez Xcode et créez un nouveau projet (application iOS ou macOS). Choisissez le langage Swift et l'interface SwiftUI ou UIKit — cela n'a pas d'importance, car le travail réseau ne dépend pas du framework d'interface utilisateur.
1.2. Installation via Swift Package Manager
Apollo iOS s'installe facilement via SPM. Allez dans File → Add Packages... et collez l'URL :
https://github.com/apollographql/apollo-ios.gitChoisissez la dernière version stable (au moment de la rédaction — 1.15.0) et ajoutez le paquet à votre cible.
Installez également Apollo Code Generation CLI — l'outil pour générer des types Swift à partir du schéma GraphQL. Le plus simple est de l'installer via Homebrew :
brew install apollo-ios-cliSi Homebrew n'est pas installé, vous pouvez utiliser npm :
npm install -g apollo-ios-cli1.3. Initialisation de la configuration
Dans le terminal, à la racine de votre projet, exécutez :
apollo-ios-cli init --module-name YourAppName --schema-namespace GraphQLCette commande crée un fichier apollo-codegen-config.json et un dossier GraphQL, où seront stockés vos fichiers .graphql.
Ajoutez maintenant le schéma du serveur à votre projet. Si le serveur fournit un schema.json ou schema.graphqls, copiez-le dans le dossier GraphQL. Sinon, vous pouvez utiliser la commande intégrée pour le télécharger :
apollo-ios-cli fetch-schema --endpoint=https://your-graphql-endpoint.com/graphql2. Écrire notre première requête GraphQL (Query)
2.1. Création d'un fichier .graphql
Dans le dossier GraphQL, créez un fichier Queries.graphql et écrivez une requête simple. Supposons que nous ayons une API pour obtenir la liste des utilisateurs :
query GetUsers { users { id name email }}2.2. Génération du code Swift
Lancez la génération de code depuis le terminal :
apollo-ios-cli generateAprès une génération réussie, un fichier API.swift apparaîtra dans le dossier Sources/API (ou dans celui que vous avez spécifié) avec les types GetUsersQuery, GetUsersQuery.Data, etc.
2.3. Exécution de la requête depuis Swift
Créons maintenant une instance du client Apollo et exécutons la requête. Dans votre ContentView.swift (ou tout autre fichier), écrivez :
import Apolloimport SwiftUI
class NetworkManager { static let shared = NetworkManager() private(set) lazy var apollo = ApolloClient(url: URL(string: "https://your-graphql-endpoint.com/graphql")!)}
struct ContentView: View { @State private var users: [GetUsersQuery.Data.User] = [] var body: some View { List(users, id: \\.id) { user in VStack(alignment: .leading) { Text(user.name)