Junior — Middle
Comment assurer que les opérations soient idempotentes sans effets négatifs?
sobes.tech IA
Réponse de l'IA
Pour que les opérations soient aptes à être répétées sans conséquences négatives, elles doivent être idempotentes. Cela signifie que la deuxième invocation de l'opération avec les mêmes paramètres ne doit pas modifier l'état du système après la première exécution réussie.
Pour cela, on peut:
- Utiliser des identifiants uniques de requêtes (par exemple, UUID) et les stocker, afin que lors d'une nouvelle réception de la requête, on retourne simplement le résultat précédent.
- Concevoir les opérations de manière à ce qu'elles ne modifient pas l'état si elles ont déjà été appliquées (par exemple, mettre à jour une valeur à une valeur fixe plutôt qu'incrémenter).
- Utiliser dans les bases de données des mécanismes de transactions et vérifier l'existence de l'enregistrement avant de l'insérer.
Exemple en Go:
var processedRequests = make(map[string]bool)
func processRequest(id string) string {
if processedRequests[id] {
return "Requête déjà traitée"
}
// Effectuer l'opération
processedRequests[id] = true
return "Requête traitée avec succès"
}
Ainsi, un second appel avec le même id ne modifiera pas l'état.