Exercice : L'API du stagiaire de 2009
Objectif
En rangeant la réserve du bar, le patron d'API-ritif a retrouvé une clé USB étiquetée « API v0 — NE PAS TOUCHER — Kévin, stage 2009 ». Elle contient la documentation de l'ancienne API du bar, toujours utilisée par la vieille caisse enregistreuse.
Votre mission, en groupe : critiquer cette API et proposer une version propre.
La documentation retrouvée
=== API DU BAR - by Kevin - 2009 ===
(marche bien normalement)
GET /getCocktails.php -> liste des cocktails (tous, d'un coup)
GET /getCocktails.php?alcool=0 -> cocktails sans alcool
GET /Cocktail?id=3 -> un cocktail
GET /cocktails/3 -> un cocktail aussi (nouvelle version)
GET /api/cocktail/delete?id=3 -> supprime un cocktail
POST /api/cocktail/updatePriceV2_final -> change le prix (envoyer id et prix)
POST /orders/list -> liste des commandes
POST /addOrderNew -> passer commande
GET /orders?user_id=12 -> commandes d'un client
GET /api/getUserPassword?user=bob -> pour le mot de passe oublié
Quelques réponses relevées :
GET /Cocktail?id=999
HTTP/1.1 200 OK
{"error": true, "msg": "pas trouvé"}
POST /addOrderNew
HTTP/1.1 200 OK
{"error": false, "data": {"Id": 42, "prix": "9,50 €", "Date": "12/03/09"}}
GET /getCocktails.php?alcool=peut-etre
HTTP/1.1 200 OK
{"error": true, "msg": "SQLSTATE[42000]: Syntax error near 'peut-etre' in /var/www/bar/getCocktails.php line 12"}
Consignes
1 - Critiquer
Pour chaque route et chaque réponse, listez tous les problèmes que vous trouvez. Pensez à tout ce qui a été vu jusqu'ici :
- nommage des routes ;
- choix des méthodes HTTP ;
- codes de statut ;
- format des données et des erreurs ;
- pagination ;
- sécurité.
Il y a plus de problèmes que de lignes. Certains sont gênants, d'autres sont graves.
2 - Corriger
Proposez la nouvelle version de l'API sous forme de tableau : méthode, route, rôle, codes de statut possibles. Proposez aussi le format corrigé des réponses ci-dessus.
Si une route ne devrait tout simplement pas exister, dites-le et expliquez pourquoi.
3 - Migrer
La vieille caisse enregistreuse ne peut pas être mise à jour avant six mois. Comment faire cohabiter l'ancienne et la nouvelle API ?
Résultat attendu
Une restitution orale par groupe :
- les 3 problèmes que vous jugez les plus graves, et pourquoi ;
- votre tableau des nouvelles routes ;
- votre stratégie de migration.