Idempotency

Architecture 🟡 Mid

Définition

Une opération idempotente produit le même résultat qu'elle soit exécutée une ou plusieurs fois. Essentiel pour les retries et la fiabilité des APIs.

Analogie

Appuyer sur le bouton d'un ascenseur déjà allume : le résultat est le même, qu'on appuie 1 ou 10 fois.

Exemple de code

// Idempotency key pour eviter les doublons
app.post('/payments', async (req, res) => {
  const existing = await db.findByIdempotencyKey(req.headers['idempotency-key']);
  if (existing) return res.json(existing);
  const payment = await processPayment(req.body);
  res.json(payment);
});

Cas d'usage

Paiements, création de ressources, toute opération qui peut être retentee par le client.

Anti-pattern

POST qui crée un doublon a chaque retry — facturations multiples en production.
#architecture#interview#api#best-practice

← → au clavier pour passer d'une fiche à l'autre