Ir al contenido

Middleware para Echo

GoPotency proporciona una integración perfecta con el framework Echo a través de su middleware específico para Echo.

Asegúrate de tener GoPotency instalado:

Ventana de terminal
go get github.com/fco-gt/gopotency
package main
import (
"net/http"
idempotency "github.com/fco-gt/gopotency"
echomw "github.com/fco-gt/gopotency/middleware/echo"
"github.com/fco-gt/gopotency/storage/memory"
"github.com/labstack/echo/v4"
)
func main() {
e := echo.New()
// 1. Inicializar el almacenamiento y el manager
store := memory.NewMemoryStorage()
manager, _ := idempotency.NewManager(idempotency.Config{
Storage: store,
})
// 2. Registrar el middleware
e.Use(echomw.Idempotency(manager))
// 3. Definir rutas
e.POST("/orders", func(c echo.Context) error {
return c.JSON(http.StatusOK, map[string]string{"status": "captured"})
})
e.Logger.Fatal(e.Start(":8080"))
}

Puedes personalizar el comportamiento del middleware pasando un objeto Config a la función NewManager. Consulta la Guía de Configuración para más detalles.

Para rutas críticas, puedes imponer que una clave debe estar presente:

manager, _ := idempotency.NewManager(idempotency.Config{
Storage: store,
RequireKey: true, // Devolverá 400 si falta el encabezado
})

Por defecto, el middleware busca el encabezado Idempotency-Key. Puedes cambiar esto o usar una estrategia personalizada (como el hashing del cuerpo de la solicitud) en la configuración del manager.