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.