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
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
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
- Démarrez d'abord les deux serveurs backend :
- Dans le dossier
pizza-rest/:npm start - Dans le dossier
pizza-hateoas/:npm start
- Dans le dossier
- Ouvrez les clients dans votre navigateur :
- Client REST : client-rest/index.html
- Client HATEOAS : client-hateoas/index.html
- Explorez les différentes approches et observez les réponses API !