Spring Boot : écrire le serveur (école d'ingénieur) · Chapitre 3 · Exercice de TD
Un ISBN contradictoire
Une API REST · niveau 2
Énoncé
Le corps d'un PUT contient un champ isbn, qui pourrait différer de celui de l'adresse. Que fait la Librairie du chapitre dans ce cas ? Modifier la méthode pour qu'un ISBN différent soit refusé par un 400, avec un message dans le champ erreur.
Corrigé
Dans la Librairie du chapitre, l'ISBN du corps est simplement ignoré : la fiche enregistrée prend celui de l'adresse. C'est discret, donc dangereux : un client qui croit modifier un livre en modifie un autre. Le corrigé refuse la contradiction :
@PutMapping("/{isbn}")
public ResponseEntity<?> remplacer(@PathVariable String isbn, @RequestBody LivreDemande demande) {
// Exercice 3.6 : l’ISBN du corps, s’il est donné, doit être celui de l’adresse.
if (demande.isbn() != null && !demande.isbn().equals(isbn)) {
return ResponseEntity.badRequest()
.body(Map.of("erreur", "L’ISBN du corps ne correspond pas à l’adresse."));
}
if (!service.existe(isbn)) {
return introuvable(isbn);
}
return ResponseEntity.ok(service.enregistrer(demande.versLivre(isbn)));
}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.