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
- 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.