-
Notifications
You must be signed in to change notification settings - Fork 0
API
Fanny Saez edited this page Jul 25, 2026
·
2 revisions
- Nom : FakeStoreAPI
- Site / accueil : https://fakestoreapi.com/
- Documentation : https://fakestoreapi.com/docs
- Base URL :
https://fakestoreapi.com - Pas de clé / authentification requise pour les appels en lecture (GET)
| 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 +localStoragepour le panier, voir Architecture), pas via/cartsni/auth/login.
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[];
}@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))
);
}
}- 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)
(ex: mise en cache simple des catégories, debounce sur la recherche, pagination/limit des appels...)
Projet Nova Market — réalisé par Sabrina · Quentin · Kim · Christophe · Fanny