回音的团体的工作不与OpenAPI产生的代码使用非洲知识产权组织-代码

0

的问题

我使用的 非洲知识产权组织-代码 生成我的服务器编码和回Labstack作服务器。 当我通过了 Group 实例 Openapi.RegisterHandlers 而不是一个 Echo 实例,我总是能得到400错误 {"message":"no matching operation was found"} 对于任何请求在这一组:

    swagger, err := Openapi.GetSwagger()
    if err != nil {
        fmt.Fprintf(os.Stderr, "Error loading swagger spec\n: %s", err)
        os.Exit(1)
    }

    // Use oapi validation middleware to check all requests against the
    // OpenAPI schema.
    g := e.Group("/api", middleware.OapiRequestValidator(swagger))
    Openapi.RegisterHandlers(g, &MyApi{})

如果请求的发送 /api/foo,哪里 foo 是一个API端点中定义的服务器产生的代码,我得到一个400错误。 如果我这样做 /api/<some undefined api> 我还可得到400人。 如果我不要给一个请求 /baz我得到404如预期,因为这不是定义的路线。 如果我没有通过的前缀 Group()我得到一个400错误对每一请求。 我得到的同样的行为如果我使用 RegisterHandlersWithBaseURL()

go go-echo openapi
2021-11-23 20:35:13
1

最好的答案

0

似乎有一种错误的地方如果你指定的一个基本路径,既可以的 Group() 功能或 RegisterHandlersWithBaseURL()OapiRequestValidator 中忽略了基本路径当检查的请求,对路径的路线。 它使用路线的定义在OpenAPI规范没有基本的道路。 要解决这个问题,我复盖了的 inline.tmpl 模板和砍死的 GetSwagger() 功能包括在下:

func GetSwagger(pathPrefix string) (swagger *openapi3.T, err error) {
...
    var updatedPaths openapi3.Paths = make(openapi3.Paths)

    for key, value := range(swagger.Paths) {
        updatedPaths[pathPrefix + key] = value
    }

    swagger.Paths = updatedPaths
}

关键在于 Path 地图的路线。 我只是追加的基本路径的每一个关键。

2021-11-30 04:00:22

其他语言

此页面有其他语言版本

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................