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.
