Idempotency
Architecture 🟡 MidDé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.