Spring Boot : écrire le serveur (école d'ingénieur) · Chapitre 3 · Application directe du cours
Modifier le seul stock
Une API REST · niveau 2
Énoncé
Un libraire reçoit des exemplaires de « Physique générale ». Écrire une opération qui change le stock d'un livre sans renvoyer toute sa fiche : choisir la méthode, l'adresse et la forme du corps. Pourquoi ne pas utiliser PUT ?
Corrigé
PUT remplace toute la ressource : il faudrait renvoyer la fiche entière, au risque d'écraser une modification faite entre temps par quelqu'un d'autre. PATCH modifie une partie ; on lui donne ici une sous-adresse explicite et un corps minimal :
// Exercice 3.4 : modifier le seul stock.
@PatchMapping("/{isbn}/stock")
public ResponseEntity<?> changerStock(@PathVariable String isbn, @RequestBody StockDemande demande) {
return service.trouver(isbn)
.<ResponseEntity<?>>map(l -> ResponseEntity.ok(service.enregistrer(new Livre(l.isbn(), l.titre(),
l.auteur(), l.rayon(), l.prix(), l.image(), l.nouveaute(), demande.stock()))))
.orElseGet(() -> introuvable(isbn));
}
avec record StockDemande(int stock).
$ curl -s -X PATCH localhost:8000/api/livres/9782956300045/stock \
-H 'Content-Type: application/json' -d '{"stock": 5}' | jq -c "{titre, stock}"
{"titre":"Physique générale","stock":5}100 % gratuit
La suite du chapitre est sur Adloun
- 10 autres exercices corrigés dans ce chapitre
- Les 2 QCM du chapitre, le premier sans compte
- Le tuteur, qui guide pas à pas sans donner la réponse
Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.