Adloun

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

Répéter une requête

Une API REST · niveau 2

Énoncé

Un client envoie deux fois de suite, à cause d'une coupure réseau, le même PUT sur un livre, puis deux fois le même POST de création. Décrire l'état du catalogue et les réponses dans chaque cas, puis écrire un test qui vérifie que deux PUT identiques laissent le catalogue inchangé en taille.

Corrigé

Deux PUT identiques donnent deux réponses 200 et laissent le livre dans le même état qu'un seul : PUT est idempotente. Deux POST de création répondent 201 puis 409 : grâce à l'ISBN, choisi par le client, le doublon est détecté. Si l'identifiant était attribué par le serveur (un numéro de commande), le second POST créerait un doublon : c'est pourquoi un client ne répète pas un POST sans précaution.


@Test
void ex9DeuxPutIdentiquesLaissentLeMemeEtat() {
    String corps = NOUVEAU.replace("9782956300076", "9782956300014");
    for (int i = 0; i < 2; i++) {
        assertThat(mvc.put().uri("/api/livres/9782956300014")
                .contentType(MediaType.APPLICATION_JSON).content(corps))
                .hasStatusOk();
    }
    assertThat(mvc.get().uri("/api/livres"))
            .bodyJson().extractingPath("$.length()").isEqualTo(6);
}

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 →