Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Requête HTTP

Pour faire communiquer nos services, on utilise des requêtes HTTP.

Emmetre des requêtes HTTP

Voici quelques exemples de requêtes.

using System.Net;

HttpClient client = new HttpClient();

Todo todo = new Todo() { Text = "text", Status = false };
int UserId = 10;

// Requete GET sans paramètre
HttpResponseMessage response = await client.GetAsync("http://localhost:5000/api/Todo/list/");

// Requete GET avec paramètre
HttpResponseMessage response = await client.GetAsync($"http://localhost:5000/api/Todo/list/{UserId}");

// Requete POST avec donnée
HttpResponseMessage response = await client.PostAsJsonAsync($"api/Todo/create/", todo);

// Requete POST avec paramètre et donnée
HttpResponseMessage response = await client.PostAsJsonAsync($"api/Todo/create/{UserId}", todo);

// Requete POST avec paramètre et sans donnée
HttpResponseMessage response = await client.PostAsync($"api/Todo/create/{UserId}");

// Autre méthode (PUT et DELETE)
HttpResponseMessage response = await client.PutAsync($"api/Todo/create/");
HttpResponseMessage response = await client.DeleteAsync($"api/Todo/create/");
HttpResponseMessage response = await client.PutAsJsonAsync($"api/Todo/create/", todo);

Utiliser la réponse

On sait comment envoyer une requêtes, maintenant récupéront sont résultat.

// Prenons comme exemple la récéption d'une classe UserLogin
public class UserLogin
{
    public required string Name { get; set; }
    public required string Pass { get; set; }
}

// On emet notre requete
HttpResponseMessage response = await client.GetAsync("http://localhost:5000/api/User/login");

// On recupere le résultat et on le transforme en une instance de UserLogin
UserLogin userLogin = await response.Content.ReadFromJsonAsync<UserLogin>();

// Si l'on veux récuperer le texte renvoyé et ne pas le convertir en instance d'une classe on le fait de la manière suivante
string str = await response.Content.ReadAsStringAsync();

Gestion des erreurs

Pour gérer les erreurs, on peut utiliser les exceptions.

try
{
    HttpResponseMessage response = await client.GetAsync("http://localhost:5000/api/User/login");
    response.EnsureSuccessStatusCode(); // Lève une exception si le code de retour n'est pas entre 200-299
}
catch (HttpRequestException e)
{
    Console.WriteLine($"Message : {e.Message}");
}

Headers

Pour ajouter des headers à une requête, on utilise la propriété DefaultRequestHeaders de HttpClient.

Par exemple pour ajouter un token JWT à une requête :

client.DefaultRequestHeaders.Add("Authorization", "Bearer " + token);