🍕 Démonstration REST vs HATEOAS

Une comparaison visuelle entre une API REST traditionnelle et une API REST avec HATEOAS

API REST Classique

Une API REST traditionnelle avec des endpoints fixes et prédéfinis. Le client doit connaître à l'avance toutes les URLs possibles.

Caractéristiques :

  • URLs codĂ©es en dur dans l'application client
  • RĂ©ponses contenant uniquement les donnĂ©es demandĂ©es
  • NĂ©cessite une documentation externe
  • Couplage fort entre client et serveur
Essayer la démo REST

API REST HATEOAS

Une API REST suivant les principes HATEOAS (Hypermedia As The Engine Of Application State). Le client découvre les URLs au fur et à mesure.

Caractéristiques :

  • DĂ©couverte dynamique des liens possibles
  • RĂ©ponses contenant donnĂ©es + liens d'actions possibles
  • Auto-documentation via les hyperliens
  • Couplage faible entre client et serveur
Essayer la démo HATEOAS

Explication des différences

Cette démonstration permet de comparer deux approches pour concevoir des API REST :

Action REST Classique REST HATEOAS
Point d'entrée Plusieurs endpoints Un seul point d'entrée (/start)
Navigation URL connues à l'avance URLs découvertes via les liens
Modifications API Peut casser les clients existants Plus robuste aux changements
Documentation Externe (Swagger, etc.) Intégrée dans les réponses

Comparaison des réponses

Voici comment les réponses diffèrent entre les deux approches :

REST Classique (GET /track/:orderId)

{
  "orderId": "abc123",
  "status": "baking"
}

REST HATEOAS (GET /track/:orderId)

{
  "order": {
    "orderId": "abc123",
    "status": "baking"
  },
  "links": [
    {
      "rel": "self",
      "href": "/track/abc123",
      "method": "GET"
    },
    {
      "rel": "cancel",
      "href": "/order/abc123/cancel",
      "method": "DELETE"
    },
    {
      "rel": "menu",
      "href": "/menu",
      "method": "GET"
    }
  ]
}

Avantages et Inconvénients

REST Classique

âś… Avantages

  • RĂ©ponses plus lĂ©gères
  • Plus simple Ă  implĂ©menter initialement
  • Plus facile Ă  comprendre pour les dĂ©butants
  • Meilleure performance (moins de donnĂ©es transfĂ©rĂ©es)
  • DĂ©bogage et tests plus simples (URLs prĂ©visibles)

❌ Inconvénients

  • Couplage fort client-serveur
  • Les changements d'URLs peuvent casser les clients
  • NĂ©cessite une documentation externe Ă  jour
  • Le client doit gĂ©rer la logique de navigation

REST HATEOAS

âś… Avantages

  • API auto-documentĂ©e
  • DĂ©couvrabilitĂ© des fonctionnalitĂ©s
  • DĂ©cisions de navigation prises par le serveur
  • Evolution de l'API sans casser les clients
  • ContrĂ´le des actions disponibles selon le contexte

❌ Inconvénients

  • RĂ©ponses plus verboses
  • ImplĂ©mentation plus complexe
  • Traitement supplĂ©mentaire des liens cĂ´tĂ© client
  • Peut nĂ©cessiter plus d'allers-retours rĂ©seau

Détails techniques

Backend

  • Node.js avec Express
  • Deux serveurs distincts (ports 3000 et 3001)
  • Stockage de donnĂ©es en mĂ©moire
  • Simulation de progression des commandes

Frontend

  • HTML, CSS et JavaScript vanilla
  • Fetch API pour les requĂŞtes HTTP
  • Visualisation des rĂ©ponses API
  • UI adaptative selon les liens disponibles (HATEOAS)

Comment démarrer la démo

  1. Démarrez d'abord les deux serveurs backend :
    • Dans le dossier pizza-rest/ : npm start
    • Dans le dossier pizza-hateoas/ : npm start
  2. Ouvrez les clients dans votre navigateur :
  3. Explorez les différentes approches et observez les réponses API !