Client HTTP en Swift : effectuer des requêtes correctement

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

Introduction : pourquoi des requêtes HTTP correctes sont le fondement de toute application



Dans le développement mobile et desktop moderne avec Swift, il est rare de trouver une application qui fonctionne de manière totalement autonome. Presque toute application iOS ou macOS interagit avec des serveurs distants : chargement de données, envoi de formulaires, synchronisation de contenu. Un client HTTP est un composant clé dont la qualité affecte non seulement les performances, mais aussi la sécurité et la stabilité de l'ensemble de l'application.



Dans cet article, nous allons détailler comment créer un client HTTP fiable en Swift en utilisant le framework intégré Foundation. Vous apprendrez à configurer correctement URLSession, à gérer les erreurs, à travailler avec JSON et à utiliser des approches modernes telles que async/await. Le contenu sera utile aussi bien aux débutants qui apprennent Swift qu'aux développeurs expérimentés souhaitant systématiser leurs connaissances.



1. Les bases de URLSession : le fondement de l'interaction réseau



En Swift, l'outil principal pour travailler avec HTTP est la classe URLSession. Elle fait partie du framework Foundation et fournit une API flexible pour envoyer des requêtes et recevoir des réponses. URLSession prend en charge plusieurs configurations, permettant d'adapter le comportement à des tâches spécifiques.



Création et configuration d'une session



La première étape consiste à créer une instance de URLSession avec une configuration spécifique. Il existe trois types de configurations :



  • .default — configuration standard avec mise en cache et persistance des cookies ;
  • .ephemeral — sans sauvegarde des données sur le disque (cookies, cache stockés uniquement en mémoire) ;
  • .background — pour les tâches en arrière-plan qui peuvent se poursuivre même après la fermeture de l'application.


Exemple de création d'une session avec une configuration personnalisée :



let configuration = URLSessionConfiguration.defaultconfiguration.timeoutIntervalForRequest = 30configuration.waitsForConnectivity = true

let session = URLSession(configuration: configuration)


Faites attention au paramètre waitsForConnectivity : s'il est défini sur true, la requête n'échouera pas avec une erreur en l'absence de réseau, mais attendra que la connexion soit rétablie. C'est particulièrement important pour les applications mobiles.



Requête GET de base



La façon la plus simple d'exécuter une requête est d'utiliser la méthode dataTask(with:). Voici un exemple minimal :



guard let url = URL(string: "https://api.example.com/users") else { return }

let task = session.dataTask(with: url) { data, response, error in if let error = error { print("Erreur de requête : \\(error.localizedDescription)") return } guard let httpResponse = response as? HTTPURLResponse, (200...299).contains(httpResponse.statusCode) else { print("Réponse serveur invalide") return } guard let data = data else { print("Aucune donnée dans la réponse") return } // Traitement des données print("Reçu \\(data.count) octets")}task.resume()


Point important : n'oubliez pas d'appeler resume(), sinon la requête ne démarrera pas. C'est l'une des erreurs les plus courantes chez les débutants.



2. Travailler avec JSON : des données aux objets



La plupart des API modernes renvoient des données au format JSON. En Swift, le protocole Codable est utilisé pour travailler avec JSON, combinant Encodable et Decodable. Cela permet de convertir facilement les données en modèles et vice versa.



Création d'un modèle et décodage



Supposons que le serveur renvoie une liste d'utilisateurs dans ce format :



[    {        "id": 1,        "name": "Ivan Petrov",        "email": "ivan@example.com"    }]


Créons la structure correspondante :



struct User: Codable                

Blogs

Book Recommendations