description: "Ce que signifie l'idempotence d'une opération, et pourquoi cela compte pour la logique de nouvelle tentative dans les systèmes distribués."
Une opération est **idempotente** si l'exécuter plusieurs fois produit
le même effet que l'exécuter une seule fois. `PUT /users/42
{"name": "Alice"}` est idempotente — l'exécuter cinq fois laisse le
même état final que l'exécuter une fois. `POST /users
{"name": "Alice"}`, qui crée un nouvel utilisateur à chaque appel, ne
## Pourquoi c'est important
Les réseaux échouent. Un client qui ne reçoit pas de réponse ne peut
pas savoir si la requête a réussi avant la coupure de connexion. Si
l'opération est idempotente, le client peut retenter en toute
sécurité. Si elle ne l'est pas, une nouvelle tentative risque un
effet de bord dupliqué — un second enregistrement utilisateur, un
- L'idempotence est une propriété de l'*opération*, pas du transport
— retenter au niveau HTTP ne rend pas sûre une opération non
- `GET`, `PUT` et `DELETE` sont idempotentes par convention HTTP ;
`POST` et `PATCH` ne le sont généralement pas, sauf si l'API le
garantit explicitement (souvent via une clé d'idempotence fournie
- Une clé d'idempotence permet de rendre sûre à retenter une
opération intrinsèquement non idempotente (comme `POST`), en
faisant dédupliquer par le serveur les requêtes portant la même
Sûr à retenter sans clé :
Pas sûr à retenter sans clé — une réponse perdue pourrait créer deux
utilisateurs nommés Alice :
Les clés d'idempotence ajoutent un état côté serveur (le serveur doit
se souvenir des clés déjà traitées, pendant une certaine durée de
rétention) et une légère complexité côté client (générer et stocker
la clé). Pour des opérations peu risquées et rarement retentées, ce
coût peut ne pas en valoir la peine.
- [Logique de nouvelle tentative](#)
- [Livraison au moins une fois vs exactement une fois](#)