Vista General de Middleware
GoPotency proporciona middleware listo para usar para los frameworks web de Go más populares. Todos los middlewares comparten la misma lógica central y configuración, lo que garantiza un comportamiento consistente independientemente del framework que elijas.
Cómo funciona
Sección titulada «Cómo funciona»El middleware intercepta las solicitudes entrantes y realiza los siguientes pasos:
- Extracción de Clave: Busca una clave de idempotencia (generalmente en los encabezados).
- Validación: Verifica si el método de la solicitud está permitido y si se requiere una clave.
- Verificación de Idempotencia: Consulta el almacenamiento para ver si la solicitud ya ha sido procesada.
- Bloqueo: Si es una solicitud nueva, adquiere un bloqueo atómico para evitar el procesamiento duplicado concurrente.
- Ejecución: Pasa la solicitud a tu manejador.
- Almacenamiento: Una vez que tu manejador termina, almacena la respuesta para una futura repetición.
Frameworks Soportados
Sección titulada «Frameworks Soportados»Actualmente proporcionamos soporte oficial para:
Granularidad por Ruta
Sección titulada «Granularidad por Ruta»Una de las fortalezas de GoPotency es su flexibilidad. Puedes aplicar el middleware de forma global o solo en rutas específicas donde la idempotencia es crítica (por ejemplo, pagos, creación de pedidos).
Global vs Específico por Ruta
Sección titulada «Global vs Específico por Ruta»Aunque puedes aplicar el middleware globalmente, recomendamos aplicarlo solo a las rutas que cambian el estado para minimizar la sobrecarga.
// Ejemplo: Aplicando solo a una ruta POST específica (Gin)r.POST("/orders", mw.Idempotency(manager), createOrder)Requerir Claves
Sección titulada «Requerir Claves»Si deseas imponer que un cliente deba proporcionar una clave de idempotencia para una ruta específica, puedes establecer RequireKey: true en tu configuración. El middleware devolverá automáticamente un 400 Bad Request si falta la clave.