Skip to content
Fanny Saez edited this page Jul 25, 2026 · 2 revisions

Appels API

API publique utilisée

Endpoints utilisés par le projet

Endpoint Méthode Usage Service appelant
/products GET Liste de tous les produits ProductService (getProductList())
/products/:id GET Détail d'un produit ProductService (getOneProduct(id))
/users GET Liste des utilisateurs, filtrée côté client par email/mot de passe pour simuler une connexion UserService (getUser(email, password))

Le filtrage par catégorie et par prix (getProductListFiltered(category, price)) est fait côté client sur la liste déjà récupérée, pas via un endpoint dédié — il n'y a pas de CategoryService séparé.

⚠️ FakeStoreAPI est une API de test : les requêtes d'écriture (POST/PUT/DELETE) sont acceptées et renvoient une réponse cohérente, mais ne persistent aucune donnée côté serveur. Le panier et la « connexion » utilisateur sont donc gérés en local (Angular Signals + localStorage pour le panier, voir Architecture), pas via /carts ni /auth/login.

Modèle de données (shared/types.ts)

export interface Product {
  id: number;
  title: string;
  price: number;
  description: string;
  category: string;
  image: string;
}

export interface User {
  id: number;
  username: string;
  email: string;
  password: string;
  address: AddressUser;
  phone: string;
  name: Name;
}

export interface CartInt {
  id: number;
  userId: number;
  products: Product[];
}

Exemple de service (réel, simplifié)

@Injectable({ providedIn: 'root' })
export class ProductService {
  private readonly http = inject(HttpClient);
  private readonly productList = signal<Product[]>([]);
  readonly productListSignal = this.productList.asReadonly();

  getProductList() {
    return this.http.get<Product[]>('https://fakestoreapi.com/products').pipe(
      tap((products) => this.productList.set(products))
    );
  }
}

Gestion des erreurs et du chargement

  • Chaque appel HTTP passe par un service dédié (ProductService, CartService, UserService).
  • Pas de crash silencieux visé : toute erreur doit être catchée et journalisée.
  • (à documenter au fil du projet : composants de chargement/erreur effectivement utilisés dans les templates, s'il y en a)

Optimisations

(ex: mise en cache simple des catégories, debounce sur la recherche, pagination/limit des appels...)

Clone this wiki locally