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;