Un cliente puede perder una respuesta después de que el servidor ya haya aplicado un cambio. Reintentar una creación o un cargo sin coordinación puede producir un duplicado, aunque el usuario haya hecho clic solo una vez.

Defina una clave por operación prevista

  • Genere una clave aleatoria cuando el usuario inicie una operación y reutilícela para reintentar esa misma operación.
  • Haga que el servidor almacene la clave con el resultado y rechace la reutilización con un cuerpo de solicitud diferente.
  • Elija y documente un período de retención que cubra la ventana de reintento esperada.

Devolver un resultado consistente

Cuando vuelva a llegar la misma clave, devuelva el resultado original o una respuesta documentada en progreso en lugar de ejecutar la mutación nuevamente. No trate una clave como autenticación; autorizar cada solicitud de forma independiente.

Pérdida de respuesta de prueba y solicitudes repetidas en el límite del servidor. Un bloqueo de botón puede reducir los clics accidentales, pero no reemplaza la idempotencia del lado del servidor cuando las redes reintentan.