Requêtes HTTP avec Alamofire dans un projet iOS en Swift

Dans l’article d’aujourd’hui, nous allons voir comment ajouter Alamofire à un projet Swift, et l’utiliser pour des requêtes Web.

Au vu de mes récents articles sur Android, je me dois d’apporter une petite précision. Cela fait plus de 5 ans que je développe sur Android, au sein de projets très variés, parfois avec des challenges techniques relevés, parfois à haut besoin de sécurité, parfois avec plusieurs millions de téléchargements sur Google Play.
À côté de ça, j’ai environ une semaine d’expérience personnelle dans le développement Swift sur iOS. Je souhaitais écrire des articles afin de partager mes connaissances, parfois recevoir des conseils en commentaires afin de m’améliorer.
Quoi qu’il en soit, il paraît évident de ce que je viens de dire que les articles sur iOS et Swift n’auront rien à voir en terme de niveau de compétences à ceux que j’écris sur Android, même si j’espère qu’ils resteront utiles.

Projet d’exemple

Création d’un nouveau projet

Pour cet article, nous allons créer un nouveau projet iOS de type Single View Application.

Nous allons appeler notre projet AlamofireSample, sélectionner le langage Swift et Universal comme type de device. Laissez “Use Core Data”, “Include Unit Tests” et “Include UI Tests” décochés.

XCode vous demande ensuite l’emplacement où vous souhaitez enregistrer votre projet, puis le crééra.

Ajout d‘un label au projet

Nous allons maintenant ajouter un label, afin d’y écrire le résultat de notre requête.

Dans Main.storyboard, ajoutez un label en haut à gauche de la vue. Nous allons spécifier que le texte de notre label sera “Chargement en cours”. De plus, nous allons lui spécifier un nombre de lignes à 0 (nombre de lignes illimité).

Enfin, nous allons lui ajouter des contraintes pour que le label soit aligné avec les marges hautes, gauches et droites.

Maintenant, nous allons ajouter une variable UILabel dans ViewController afin de la rattacher au Label que nous venons d’ajouter dans le Storyboard. Pour ce faire, ajoutez la ligne suivante dans ViewController.swift

Maintenant, retournez dans le Sotryboard, faîtes un Ctrl+Clic sur l’icône View Controller, et en maintenant le clic enfoncé, glisser sur le Label que nous avons ajouté et relâchez :

Dans le menu qui s’ouvre, choisissez contentLabel.

Une fois que c’est fait, fermez le projet Xcode.

Ajout de la bibliothèque Alamofire

La dernière version de Alamofire (4.4.0 à l’heure de l’écriture de cet article) requiert l’utilisation de CocoaPods pour l’ajout de cette dépendance.

Installation de CocoaPods

CocoaPods est un gestionnaire de dépendances pour les projets Cocoa en Swift et Objective-C.

Pour installer CocoaPods, exécutez la commande suivante dans un terminal :

C’est fait, CocoaPods est installé sur votre machine.

Ajout de la bibliothèque Alamofire au projet

Pour que CocoaPods ajoute des dépendances à notre projet, nous avons besoin de créer un fichier Podfile à la racine de notre projet. Nous allons ajouter la dépendance à la bibliothèque Alamofire dans ce fichier. Rendez-vous à la racine de votre projet AlamofireSample et exécutez la commande suivante :

Si vous n’avez pas nommé votre projet AlamofireSample, pensez à remplacez AlamofireSample par le nom de votre projet à la ligne 6 de cette commande

Une fois ceci fait, il ne vous reste plus qu’à exécuter la commande suivante toujours à la racine de votre projet :

Requête Web avec Alamofire

Comme dit dans le résultat de la précédente commande :

[!] Please close any current Xcode sessions and use `AlamofireSample.xcworkspace` for this project from now on.

Ainsi, dans l’écran d’accueil de XCode, sélectionnez “Open another project” et choisissez le fichier AlamofireSample.xcworkspace à la racine de votre projet.

Ouvrez à nouveau le fichier ViewController.swift et nous allons ajouter la requête avec Alamofire dans la méthode viewDidLoad() :

Si XCode vous signale une erreur au niveau de l’import de Alamofire du type “cannot load underlying module for Alamofire”, contentez vous d’effectuer un Cmd+B pour compiler le projet.

Une fois ceci fait, vous pouvez exécuter le projet, et l’application devrait afficher “Chargement en cours” un court instant, avant de produire le résultat suivant :

Gestion des erreurs

Bien entendu, Alamofire permet de gérer les erreurs, tout simplement en regardant le type de response.result :

Avec ce code mis à jour, en l’absence de connection, vous devriez obtenir le résultat suivant :

Conclusion

Le code source final de l’application est disponible dans le projet Alamofire sur GitHub.

La vocation de cet article était simplement de fournir une première introduction à Alamofire. Dans un prochain article, nous verrons comment nous servir de Alamofire pour remplir un tableau avec des données.