Archives Wild Code School
C#

C#: Consommer une API REST avec WebClient

Quête 37 sur 46

Durant cette quête tu apprendras à te servir de la classe WebClient pour requêter des API

Objectifs

  • Savoir émettre une requête à une API avec WebClient

  • Interpréter les données retournées par l'API

Différentes méthodes

Une multitude de classes présentes de base dans le framework .NET permettent d'effectuer des requêtes HTTP. Voici une liste de quelques classes permettant de requêter le Web:

  • System.Net.Http - Un espace de noms fournissant des classes complexes à manipuler mais qui permettent si elles sont bien utilisées d'avoir un contrôle absolu sur le flux de données

  • HttpWebRequest - Une classe à ne plus utiliser dans les nouveaux développements au profit de System.Net.Http.HttpClient mais qu'on peut retrouver sur du code legacy

  • WebClient - Une classe très simple à manipuler qui abstrait beaucoup de détails pour le développeur

Toutes ces espaces de noms/bibliothèques permettent de mettre en place de la programmation réactive.

La programmation réactive est un paradigme de programmation qui tient compte du fait que l'action est asynchrone, à savoir non-bloquante.

Lors d'un long processus (par exemple : charger et afficher la liste de tous les utilisateurs d'un site), on peut comparer deux paradigmes :

  • la programmation impérative: le programme va attendre la fin de la tâche avant de poursuivre son exécution

  • la programmation réactive: le programme va poursuivre son exécution (il sera donc possible d'effectuer d'autres actions) et il sera prévenu de la fin de la tâche (ou de l'avancée, voire de son échec).

WebClient

La classe la plus simple et intuitive à utiliser pour exécuter des requêtes HTTP est WebClient. Tu t'en doutes, durant cette quête nous allons utiliser WebClient afin d'apprendre à exécuter des requêtes HTTP par programmation.

La classe WebClient est disponible par défaut dans les versions actuelles du framework .NET. Cette classe appartient à l'espace de noms System.Net.

Voici un exemple d'utilisation de WebClient qui va récupérer une réponse HTTP en seulement deux lignes de code, la classe non (sans jeux de mots ;) )?:

cs
using System;
using System.Net;

namespace HttpRequestsTest
{
    public static void Main()
    {
        WebClient client = new WebClient();

        String response = client.DownloadString("http://google.com");
      
        Console.WriteLine(response);
    }
}

Le code ci-dessus est excessivement simple:

  1. On instancie la classe WebClient

  2. On utilise la méthode DownloadString de la classe WebClientqui va télécharger la page et retourner sa totalité en chaîne de caractères

  3. On affiche la réponse à l'écran

↗
Requête HTTP par programmation

Documentation officielle de la classe WebClient qui utilise des flux pour retourner le résultat

learn.microsoft.com
↗
Requête HTTP par programmation

Cas concret d'utilisation de WebClient dans une application

c-sharpcorner.com

Challenge

Star Wars API

L'API suivante permet de récupérer des informations sur la saga Star Wars: https://swapi.dev/.

A partir de cette API, il va falloir que tu conçoives un formulaire en ASP.NET qui permet d'effectuer une recherche de planètes par _identifiant numérique _sur l'API.

Critères de validation

  • Une application Asp.Net MVC qui récupère des informations sur une planète identifiée par son identifiant numérique (exemple https://swapi.dev/api/planets/1)

  • Un tableau HTML affiche toutes les informations reçues sur la planète

  • Les données proviennent de la plateforme https://swapi.dev/