Cianplan

Nivel 1: Fundamentos · L1.1 APIs: REST, gRPC, GraphQL, WebSockets/SSE, webhooks

Idempotency keys

Hacer que un POST sea seguro de reintentar con una idempotency key.

12 min · Gratis

Lo que te llevas

  • Un timeout nunca te dice si la petición se aplicó, así que cualquier reintento de un POST corre el riesgo de hacer el trabajo dos veces.
  • El cliente genera una llave antes del primer intento y manda la misma llave en cada reintento.
  • El servidor guarda la llave con el resultado y repite ese resultado en lugar de volver a actuar.
  • La fila de la llave se tiene que escribir en la misma transacción que el efecto, o una caída entre los dos te deja con uno sin el otro.

Cómo está armada la clase

  1. El problema
  2. La versión simple
  3. Qué hace el servidor
  4. Qué te compra esto, y dónde está el límite
  5. Comprueba lo que entendiste