Spring Boot : écrire le serveur (école d'ingénieur) · Chapitre 3 · Exercice de TD
Un prix maximal
Une API REST · niveau 1 (application)
Énoncé
Ajouter à GET /api/livres un paramètre facultatif prixMax : seuls les livres de prix inférieur ou égal sont renvoyés. Les autres filtres continuent de fonctionner.
Corrigé
Un paramètre de type Double (et non double) peut valoir null quand il est absent. Le corrigé réunit ce filtre et le tri de l'exercice suivant :
// Exercices 3.2 et 3.3 : prix maximal et tri.
@GetMapping
public ResponseEntity<?> lister(@RequestParam(required = false) String rayon,
@RequestParam(required = false) String q,
@RequestParam(required = false) Double prixMax,
@RequestParam(defaultValue = "aucun") String tri) {
Comparator<Livre> ordre = switch (tri) {
case "prix" -> Comparator.comparingDouble(Livre::prix);
case "titre" -> Comparator.comparing(Livre::titre);
default -> null;
};
if (ordre == null && !tri.equals("aucun")) {
return ResponseEntity.badRequest().body(Map.of("erreur", "Tri inconnu : " + tri + "."));
}
var flux = service.lister(rayon, q).stream()
.filter(l -> prixMax == null || l.prix() <= prixMax);
return ResponseEntity.ok(ordre == null ? flux.toList() : flux.sorted(ordre).toList());
}
$ curl -s "localhost:8000/api/livres?prixMax=10&tri=prix" | jq -c "map({titre, prix})"
[{"titre":"L’Étranger","prix":7.9},{"titre":"Le Petit Prince","prix":8.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.