Adloun

Spring Boot : écrire le serveur (école d'ingénieur) · Chapitre 9 · Exercice de TD

Une route inconnue de l'API

Le client Vue face au serveur · niveau 3 (difficile)

Énoncé

Le serveur d'essai répondait 404 et {"erreur":"Route inconnue : GET /api/inconnu"} à une adresse /api/… qui n'existe pas ; Spring Boot répond 401. Obtenir le même 404, sans rien ouvrir de ce qui est réservé au personnel.

Corrigé

Deux changements. La sécurité laisse passer les adresses /api/** qui ne sont pas déjà réservées (les règles s'appliquent dans l'ordre : celles du personnel, plus haut, restent en vigueur) :


                // exercice 9.9 : une route inconnue de l'API arrive jusqu'à Spring MVC (404)
                .requestMatchers("/api/**").permitAll()

Spring MVC lève alors NoResourceFoundException, que la classe ErreursApi du chapitre 4 met au format de l'API :


    /** Exercice 9.9 : une adresse /api/… qui n'existe pas, comme le serveur d'essai. */
    @Override
    protected ResponseEntity<Object> handleNoResourceFoundException(NoResourceFoundException ex,
            HttpHeaders entetes, HttpStatusCode statut, WebRequest requete) {
        String message = "Route inconnue : " + ex.getHttpMethod() + " /" + ex.getResourcePath();
        return handleExceptionInternal(ex, probleme(HttpStatus.NOT_FOUND, "Route inconnue", message),
                entetes, statut, requete);
    }

    @Test
    void routeInconnue() {
        assertThat(mvc.get().uri("/api/inconnu"))
                .hasStatus(404)
                .bodyJson().extractingPath("$.erreur").isEqualTo("Route inconnue : GET /api/inconnu");
    }

    @Test
    void ladministrationResteProtegee() {
        assertThat(mvc.get().uri("/api/admin/commandes")).hasStatus(401);
    }

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 →