Spring Boot : écrire le serveur (école d'ingénieur) · Chapitre 5 · Exercice de TD
Un tri choisi par le client
Les données en base avec JPA et Spring Data · niveau 2
Énoncé
L'API veut accepter un paramètre ?tri=prix. Écrire une méthode de service trier(String champ) qui trie le catalogue selon ce champ, mais refuse (par une IllegalArgumentException) tout autre champ que titre, auteur et prix. Pourquoi cette liste fermée ?
Corrigé
// Exercice 5.10 : un tri choisi par le client, mais parmi une liste fermée
public List<Livre> trier(String champ) {
if (!TRIS_PERMIS.contains(champ)) {
throw new IllegalArgumentException("Tri impossible sur « " + champ + " ».");
}
return depot.findAll(Sort.by(champ));
}
avec TRIS_PERMIS = Set.of("titre", "auteur", "prix"). Un champ inconnu passé à Sort.by ferait échouer la requête avec une erreur peu parlante (une 500 pour le client) ; surtout, une liste fermée garantit que le client ne choisit que des tris prévus, par exemple pas un tri sur une colonne interne. Le test vérifie qu'un tri par prix commence par L'Étranger et Le Petit Prince, et qu'un « champ » comme stock; drop table livre est refusé.
100 % gratuit
La suite du chapitre est sur Adloun
- 9 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.