Dans ce chapitre, nous allons découvrir la classe qui gère les requêtes en Swift : URLSession .
Quand on parle de URLSession , on parle en même temps de la classe et de la suite de classes correspondantes. En effet, il y a au moins trois classes qui fonctionnent avec URLSession :
URLSession ;
URLSessionConfiguration ;
URLSessionTask .
Ces trois classes s'articulent comme suit :

URLSession s'initialise avec URLSessionConfiguration. C'est cette classe qui permet de configurer la session. Lors de la configuration, on essaie de répondre à ce genre de questions :
Accepte-t-on les cookies ?
Quelle est la politique de cache ?
Quel est le timeout d'une requête ?
Doit-on rajouter des éléments dans le header ? Etc.
Une fois que URLSession est initialisé avec la bonne configuration, il peut lancer une "tâche". Une tâche lance une requête réseau, reçoit la réponse, décide de l'interrompre, etc. Cela est géré par la classe URLSessionTask . Elle est responsable de la gestion du cycle de vie de la requête.
Il existe plusieurs types de tâches. Pour chaque type de tâche, Apple a créé une sous-classe de URLSessionTask :
URLSessionDataTask : cette tâche permet d'envoyer ou de recevoir des données ;
URLSessionUploadTask : cette tâche permet d'effectuer un téléchargement ascendant : l'envoi de fichiers lourds (vidéo, enregistrement audio, etc.) vers un serveur ;
URLSessionDownloadTask : cette tâche permet d'effectuer un téléchargement descendant : la réception de fichiers lourds (vidéo, enregistrement audio, etc.) depuis un serveur.
Une fois la requête envoyée, la réponse est formatée et disponible dans la classe URLResponse ou dans sa sous-classe HTTPURLResponse (spécifique aux requêtes HTTP). Vous pouvez notamment y vérifier le status code de la réponse pour vérifier que la requête a fonctionné.
Cette réponse est accompagnée d'une éventuelle erreur ( Error ) et d'éventuelles données ( Data ).
URLSession permet de lancer des requêtes avec les 3 sous-classes d' URLSessionTask : URLSessionDataTask , URLSessionUploadTask et URLSessionDownloadTask .
URLSession est initialisée avec URLSessionConfiguration .
URLRequest permet de spécifier la requête : quelle URL, quelle méthode, quels paramètres, quel endpoint de l’API j’utilise, et comment.
La réponse est le plus souvent disponible en trois objets : URLResponse (ou HTTPURLResponse ), Data et Error .
Vous avez fait vos premiers pas avec URLSession , bravo ! Dans le prochain chapitre, nous utiliserons la suite de classes URLSession pour lancer notre première requête avec Swift !