ReSTful donc Stateless
Supposons le scénario d’échange suivant. Est-il stateless ?
🧐
👍
GET /init
GET /select-cart?cartId=123ab
POST /add-product
POST /add-product
POST /update-product-count?productId=12345
GET /cart-summary
POST /pay

No!
- L’effet "never-click-back!".
- Problèmes de "load balancing".
- Comment paralléliser l’ajout de deux produits dans deux paniers différents ?
- Comment mettre la ressource "/cart-summary" en cache.
- API peu intuitive et peu extensible.
POST /carts/123ab/items
POST /carts/456cb/items
PATCH /items/33333
POST /carts/123ab/payments
GET /carts/123ab
- Pas de session à maintenir et donc pas de problème de load balancing.
- Moins de requêtes.
- Il est possible de paralléliser les requêtes.
- Cacheable.
- API intuitive et extensible.
- L’API est human readable (pas besoin d’avoir la documentation en permanence sous les yeux).
- L’API est facile à étendre (ajout de propriétés par exemple).
- L’API peut répondre facilement à des besoins qui n’ont pas été anticipé (modification du nombre de produits dans le panier par exemple).
En général, on peut comparer les approches stateful et stateless à la métaphore de la destination géographique.
Exemple :
- Coordonnées GPS d'un lieu. vs.
- Les indications pour s'y rendre :
- Tournez à droite.
- à 100m à gauche.
- Au rond-point (s’il n’a pas changé depuis), sortez à la 3ème sortie.
- Admirez la vue sur votre gauche
- …
Dernière mise à jour 3yr ago