Un client peut perdre une réponse après que le serveur a déjà appliqué une modification. Réessayer une création ou une facturation sans coordination peut produire un doublon, même si l'utilisateur n'a cliqué qu'une seule fois.
Définir une clé par opération prévue
- Générez une clé aléatoire lorsque l'utilisateur démarre une opération et réutilisez-la pour les tentatives de cette même opération.
- Demandez au serveur de stocker la clé avec le résultat et de refuser la réutilisation avec un corps de requête différent.
- Choisissez et documentez une période de conservation qui couvre la fenêtre de nouvelle tentative prévue.
Renvoie un résultat cohérent
Lorsque la même clé arrive à nouveau, renvoyez le résultat d'origine ou une réponse documentée en cours plutôt que d'exécuter à nouveau la mutation. Ne traitez pas une clé comme une authentification ; autoriser chaque demande indépendamment.
Testez la perte de réponse et les requêtes répétées à la limite du serveur. Un verrouillage de bouton peut réduire les clics accidentels, mais il ne remplace pas l'idempotence côté serveur lorsque les réseaux réessayent.
