Echo 그룹으로 작동하지 않 OpenAPI 생성된 코드를 사용하여 oapi-코드 생성

0

질문

내가 사용하 oapi-코드 생성 을 생성하는 내 서버 코드 및 에코 Labstack 서버로 사용합니다. 때 전달 Group 인스턴스 Openapi.RegisterHandlersEcho 인스턴스,저는 항상 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/foofoo 는 API 를 끝점을 정의에서 생성되는 서버 코드,내 400 오류가 있습니다. 내가 할 경우 /api/<some undefined api> I also get400. 내가 할 경우에 대한 요청을 보낼 수 있습니다 /baz내 404 으로 예상되기 때문지 않는 정의된다. 지 않는 경우 통과하는 접두사 Group()내 400 오류에 대한 모든 요청을 합니다. 내가 같은 동작을 내가 사용하는 경우 RegisterHandlersWithBaseURL()

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

최고의 응답

0

가 될 것 같은 버그를 지정하는 경우 기본 경로 중 하나를 Group() 기능 또는 RegisterHandlersWithBaseURL()이,OapiRequestValidator 중간에 무시 기본 경로를 확인할 때 요청을 경로에 대한 노선이 있습니다. 사용 노선에 정의된 OpenAPI spec 없이 기본 경로입니다. 이러한 문제를 해결하기 위해,나는 덮어쓰기 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ý
..................................................................................................................