Service API

Pour comuniquer avec une API, nous allons créer un service qui va gérer les appels HTTP.

Créez un nouveau fichier ConfitureService.cs dans le dossier Services.

On injecte une instance de HttpClient dans le constructeur pour faire des appels HTTP.

namespace MonFront.Services;

public class ConfitureService
{
    private readonly HttpClient _httpClient;

    public ConfitureService(HttpClient httpClient)
    {
        _httpClient = httpClient;
    }
}

Requêtes HTTP

Pour récupérer la liste des confitures, on utilise la méthode GetFromJsonAsync de HttpClient.

public async Task<List<Confiture>> GetConfitures()
{
    var confitures = await _httpClient.GetFromJsonAsync<List<Confiture>>("http://localhost:5000/api/confiture/list");
    return confitures;
}

Pour récupérer une confiture en particulier, on utilise la méthode GetFromJsonAsync de HttpClient.

public async Task<Confiture> GetConfiture(int id)
{
    var confiture =  await _httpClient.GetFromJsonAsync<Confiture>($"http://localhost:5000/api/confiture/{id}");
    return confiture;
}

Si on veux ajouter une confiture, on utilise la méthode PostAsJsonAsync de HttpClient.

public async Task<HttpResponseMessage> AddConfiture(Confiture confiture)
{
    var confiture =   await _httpClient.PostAsJsonAsync("http://localhost:5000/api/confiture/create", confiture);
    return confiture;
}

Si on veux envoyer une requête sans attendre de réponse en JSON on peux simplement faire

public async Task Ping()
{
    await _httpClient.GetAsync("http://localhost:5000/api/ping");
}

Vérifier le code de retour

Pour vérifier le code de retour d'une requête, on utilise la propriété StatusCode de HttpResponseMessage.

var response = await _httpClient.PostAsJsonAsync("http://localhost:5000/api/confiture/create", confiture);
if (response.StatusCode == HttpStatusCode.Created)
{
    // Code 201
}
var confiture = await response.Content.ReadFromJsonAsync<Confiture>();
return confiture;