Desarrollador Backend: pregunta de entrevista

¿Cómo diseñas una API idempotente?

Una escritura idempotente puede reintentarse sin crear otro efecto de negocio. Guarda una clave de idempotencia con el resultado o identificador de negocio y devuelve el resultado original para un duplicado.

Respuesta directa

Qué debe cubrir una buena respuesta

Cómo funciona

Los clientes reintentan tras un timeout sin saber si el primer intento tuvo éxito, así que una escritura debe poder repetirse con seguridad. El cliente envía una clave de idempotencia por operación lógica; el servidor guarda la clave con el resultado antes o dentro de la misma transacción que el efecto, y devuelve la respuesta almacenada para cualquier solicitud posterior con esa clave. Las claves naturales como un número de pedido pueden sustituir a las generadas cuando el negocio ya tiene una. GET, PUT y DELETE son idempotentes por definición; POST necesita este mecanismo.

Ejemplo

Un POST de pago con la misma clave tras un timeout devuelve el primer resultado en vez de cobrar dos veces. La fila de la clave se inserta con una restricción única al inicio del procesamiento, así que un duplicado concurrente choca con la restricción y espera o lee el primer resultado en lugar de volver a cobrar.

Errores frecuentes

  • Guardar la clave después del efecto, de modo que un fallo entre ambos sigue permitiendo un duplicado.
  • Definir claves globales en lugar de por cliente, lo que permite que un tenant colisione con otro.
  • Conservar las claves para siempre en lugar de expirarlas tras la ventana de reintentos.

Una estructura útil para responder

Responde desde tu propia experiencia.

No memorices un guion: usa solo ejemplos que puedas explicar con honestidad en preguntas posteriores.

Practica esta respuesta con MiraHint

Abre el espacio de trabajo de escritorio y ensaya una respuesta clara con tus propias palabras.

Descargar MiraHint
Preguntas de entrevista para Desarrollador Backend