Estrategias de Clave
Una KeyStrategy es responsable de extraer o generar un identificador único para una petición.
Estrategias Disponibles
Sección titulada «Estrategias Disponibles»Header-Based (Predeterminada)
Sección titulada «Header-Based (Predeterminada)»El enfoque más común. El cliente es responsable de enviar una clave única en un encabezado HTTP específico.
import "github.com/fco-gt/gopotency/key"
// Comportamiento por defecto: busca "Idempotency-Key"manager, err := idempotency.NewManager(idempotency.Config{ KeyStrategy: key.HeaderBased("Idempotency-Key"), })Body Hash
Sección titulada «Body Hash»Útil cuando desea forzar la idempotencia basada en el contenido de la petición misma, sin requerir que el cliente maneje las claves.
KeyStrategy: key.BodyHash()Nota: Esto generará un hash SHA-256 del cuerpo de la petición.
Composite
Sección titulada «Composite»Un enfoque híbrido. Primero intenta encontrar una clave en los encabezados; si no la encuentra, recurre al hash del cuerpo de la petición.
KeyStrategy: key.Composite("Idempotency-Key")Estrategia Personalizada
Sección titulada «Estrategia Personalizada»Puede implementar su propia estrategia cumpliendo con la interfaz KeyStrategy:
type MyCustomStrategy struct{}
func (s *MyCustomStrategy) Generate(req *idempotency.Request) (string, error) { // Tu logica customizada (ej., usando una combinacion de UserID y OrderID) return fmt.Sprintf("user-%d-order-%s", req.UserID, req.Body.OrderID), nil}