इको समूहों के साथ काम नहीं OpenAPI उत्पन्न कोड का उपयोग कर oapi-codegen

0

सवाल

मैं का उपयोग कर रहा हूँ oapi-codegen उत्पन्न करने के लिए अपने सर्वर कोड और गूंज 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 एक एपीआई समापन बिंदु में परिभाषित उत्पन्न सर्वर कोड, मैं एक 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ý
..................................................................................................................

इस श्रेणी में लोकप्रिय

लोकप्रिय सवाल इस श्रेणी में