Adloun

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

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 →