Revenir

Entre ton email pour recevoir le guide complet pour apprendre Swift peu importe ton niveau

La meilleure façon d'utiliser les API REST dans Swift

Dans cet article, je vais vous montrer les meilleures pratiques pour l’utilisation d’une API.

À propos des frameworks externes

Nous n’utiliserons pas ici une bibliothèque telle qu’Alamofire car, pour des actions simples comme un appel d’API, vous n’avez pas besoin d’une bibliothèque externe.

Alamofire est utile et rend tout plus rapide, mais vous n’avez pas toujours besoin de toutes les fonctionnalités qu’il possède et ajouter beaucoup de dépendences à une app n’est jamais une bonne chose.

Lorsque vous devez traiter des appels d’API basiques, l’URLSession intégrée fera largement le travail.

Récupérer un JSON à partir d’une API

Commençons par faire une simple requête pour obtenir des données JSON à partir d’une API.

Voici le code :

GET request vers une API en Swift

Premièrement, nous créons notre URL avec une String puis, nous utilisons URLSession pour retourner les données, la réponse, et les erreurs si nécessaire dans un completion handler.

Ensuite, nous décodons les données dans une structure que nous avons créée.

Cette structure hérite de Codable et, en gros, elle contient toutes les propriétés du JSON reçu avec leurs types.

Et pour chaque JSON imbriqué, vous devez créer une autre structure pour décrire ses données avec le nom et les types des propriétés.

Ce code fonctionne mais il y a un problème.

Le print("finished") apparaîtra avant le print("hey").

Et ce n’est pas ce que nous voulons.

Nous voulons que notre code fasse la requête et ensuite exécute le reste du code.

Un exemple que vous rencontrerez très souvent est de devoir afficher les données reçues dans une TableView.

Pour ce faire je devrais recharger la TableView seulement lorsque l’URLSession est terminée.

Mais cela ne peut pas être fait avec notre code.

Nous ne pouvons pas attendre que l’URLSession soit terminée pour recharger les données et nous ne pouvons pas recharger les données sur la ligne 42, cela provoquerait une erreur.

Nous devons ajouter un completion handler.

Voici le code :

GET request vers une API en Swift

Bien mieux maintenant !

Poster JSON dans une API

Maintenant que nous pouvons obtenir des données à partir d’une API, il faudrait pouvoir en envoyer !

POST request vers une API en Swift

Tout d’abord, nous créons notre URL puis, nous créons une requête HTTP avec URLRequest et nous spécifions que nous voulons que ce soit une requête de type POST.

Ensuite, nous créons un dictionnaire (avec les données que nous voulons envoyer) et nous le convertissons en données JSON.

Ensuite, nous utilisons URLSession pour envoyer cette requête et nous retournons le code de statut au completion handler !

Requêtes multiples

C’est quelque chose que je ne recommande pas, car cela ralentira votre application et du point de vue d’un UX designer et d’un développeur.

Il n’est jamais bon d’avoir trop de données à afficher sur un seul écran.

Mais il y a un moyen efficace de faire plusieurs requêtes sans ralentir votre app.

Il suffit de les faire toutes en même temps sans attendre que l’une des requêtes finisse avant de passer à la suivante.

Vous pouvez le faire en créant un DispatchGroup, voici le code :

Requêtes API en parallèle swift

D’abord, on crée une instance de DispatchGroup puis, pour chaque requête on entre dans le DispatchGroup et on le quitte quand on a fini la requête.

Lorsque chaque requête est terminée, le DispatchGroup est notifié et le code du completion handler est exécuté !

C’est beaucoup plus rapide de faire toutes les requêtes en même temps qu’une seule à la fois.

Conclusion

Merci d’avoir lu cet article, j’espère qu’il vous a été utile et que vous avez appris quelque chose !