Créer une App Moderne — Avalonia UI & .NET

🌍 Module 7 — Le client API HTTP / REST

Connecter l'application à un serveur distant sans figer l'interface.

Créer une App Moderne — Avalonia UI & .NET

📝 Changelog

  • Création d'un HttpTodoRepository.
  • Ajout des opérations GET et POST.
  • Introduction concrète de async / await dans une application UI.
Créer une App Moderne — Avalonia UI & .NET

Objectif du module

  • Charger les tâches depuis une API REST.
  • Envoyer une nouvelle tâche au serveur.
  • Gérer le temps réseau sans bloquer le thread UI.
  • Préparer la synchronisation multi-clients.
Créer une App Moderne — Avalonia UI & .NET

Pourquoi l'asynchronisme est obligatoire

  • Une requête réseau prend du temps.
  • La fenêtre doit rester réactive.
  • Le bouton, la saisie et le redimensionnement ne doivent pas se figer.
  • await garde un code lisible tout en restant non bloquant.
Créer une App Moderne — Avalonia UI & .NET

Squelette du repository HTTP

public sealed class HttpTodoRepository : ITodoRepository
{
    private readonly HttpClient _httpClient;
    public async Task<IReadOnlyList<TodoItem>> GetAllAsync() =>
        await _httpClient.GetFromJsonAsync<List<TodoItem>>("api/todos") ?? new();
}
Créer une App Moderne — Avalonia UI & .NET

Le concept clé: l'UI thread ne doit jamais attendre le réseau

  • Toute opération I/O doit être asynchrone.
  • Les erreurs réseau sont normales et doivent être traitées.
  • Le ViewModel peut exposer un état IsLoading.
  • L'interface doit montrer qu'un chargement est en cours.
Créer une App Moderne — Avalonia UI & .NET

Illustration de la chaîne HTTP

Chaîne HTTP entre l'application, HttpClient et l'API REST

Créer une App Moderne — Avalonia UI & .NET

Schéma Mermaid REST

Schéma de séquence REST entre ViewModel, repository HTTP et API

Créer une App Moderne — Avalonia UI & .NET

Exemples d'usages côté ViewModel

public async Task ChargerAsync()
{
    var taches = await _repository.GetAllAsync();
    Taches.Clear();
    foreach (var tache in taches) Taches.Add(tache);
}
Créer une App Moderne — Avalonia UI & .NET

Cas d'erreur à prévoir

  • API indisponible.
  • Réponse vide ou format inattendu.
  • Timeout réseau.
  • Authentification future.
Créer une App Moderne — Avalonia UI & .NET

Livrable du module

  • Les données sont lues depuis une API REST.
  • Les nouvelles tâches sont envoyées au serveur.
  • L'application reste fluide pendant les appels réseau.