Los Grupos Echo no funcionan con el código generado por OpenAPI utilizando oapi-codegen.
Estoy utilizando oapi-codegen para generar el código de mi servidor y Echo Labstack como servidor. Cuando paso una instancia de Group
a Openapi.RegisterHandlers
en lugar de una instancia de Echo
, siempre obtengo un error 400 con {"message":"no matching operation was found"}
para cualquier solicitud en ese grupo:
swagger, err := Openapi.GetSwagger()
if err != nil {
fmt.Fprintf(os.Stderr, "Error loading swagger spec\n: %s", err)
os.Exit(1)
}
Utilizo el middleware de validación de Oapi para verificar todas las solicitudes contra el esquema OpenAPI.
g := e.Group("/api", middleware.OapiRequestValidator(swagger))
Openapi.RegisterHandlers(g, &MyApi{})
Si envío una solicitud /api/foo
, donde foo
es un punto de extremo de API definido en el código de servidor generado, obtengo un error 400. Si envío una solicitud /api/<alguna API no definida>
también obtengo un error 400. Si envío una solicitud para /baz
, obtengo un 404 como se esperaba, ya que esa no es una ruta definida. Si no paso un prefijo a Group()
, obtengo un error 400 para cada solicitud. Obtengo el mismo comportamiento si uso RegisterHandlersWithBaseURL()
.
davy.ai
Problema al utilizar una instancia de Grupo en lugar de una instancia de Echo con oapi-codegen
Cuando se utiliza oapi-codegen para generar código de servidor y Echo Labstack como servidor, pasar una instancia de
Group
al métodoOpenapi.RegisterHandlers
en lugar de una instancia deEcho
resulta en un error 400 con{"message":"no matching operation was found"}
para cualquier solicitud en ese grupo.Para resolver este problema, se recomienda pasar una instancia de
Echo
al métodoOpenapi.RegisterHandlers
en lugar de una instancia deGroup
. Al definir el middleware paraOapiRequestValidator
, utilicee.Group
para definir el prefijo requerido para los endpoints de su API.Código de ejemplo:
Esto debería resolver el problema y permitirle utilizar oapi-codegen con Echo Labstack para servir los endpoints de su API.