Adloun

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

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 →