WindevExpert

Vidéo 44 • Fiabilité des Transactions

L'Idempotence :
Zéro Doublon

Apprenez à rendre votre API "intelligente" pour qu'elle sache ignorer les requêtes répétées et protéger l'intégrité de vos bases de données.

Le Danger de la Synchronisation Aveugle

Scénario Catastrophe

Le client envoie un ticket. Le serveur l'enregistre mais la connexion coupe avant la réponse.

Le client croit que ça a échoué et renvoie le ticket.

RÉSULTAT : 2 factures créées. Stock faussé. Client furieux.

L'Idempotence Expert

"Peu importe combien de fois tu m'envoies le même ticket, je ne l'enregistrerai qu'une seule fois."

Laboratoire : Détection de Redondance

Ticket à synchroniser
UUID: 7F4D-2A1B
Astuce : Cliquez deux fois rapidement pour simuler un "Retry" réseau.
Internet Gateway
Cloud Database
--- Vide ---
// Logs système...

La Clé de l'Unicité

Utiliser l'ADN de la donnée

L'expert n'attend pas que la base de données rejette l'ID (trop tard).

Le serveur maintient un Cache d'Idempotence (très rapide) qui stocke les UUID des 24 dernières heures.
Si le même UUID arrive, le serveur répond immédiatement "200 OK" (en mentant pour rassurer le client) sans rien écrire.

Règle de l'Expert :

"Toujours renvoyer un succès pour un doublon, sinon le client va boucler à l'infini."

Mémoire Vive (Redis)
UUID: 7F4D -> DÉJÀ TRAITÉ

Algorithme d'Anti-Doublon

// 1. On extrait l'identifiant unique de la requête
sMonUUID est une chaîne = stPaquetRecu.UUID

// 2. ON VÉRIFIE SI ON L'A DÉJÀ VU (VÉRIFICATION IDEMPOTENCE)
SI HLitRecherchePremier(F_TICKET, UUID, sMonUUID) ALORS
    // ALERTE : C'est un doublon !
    // On ne fait rien, mais on répond "200 OK" au client
    HTTPRéponse(200, "ALREADY_PROCESSED")
    RETOUR
FIN

// 3. Première fois : On enregistre normalement
HBufferVersEnreg(F_TICKET, stPaquetRecu)
HAjoute(F_TICKET)