Adloun

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

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 →