Adloun

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

Exercice suivant et tuteur

Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.

Le cours du chapitre · Tous les exercices du chapitre

Exercice suivant et tuteur →