php小編香蕉在開發過程中,有時會遇到一個問題:無法使用 go-openapi/runtime/middleware 載入 API 定義。這個問題可能會影響到專案的正常進行,因此需要及時解決。在解決這個問題之前,我們需要先了解一下 go-openapi/runtime/middleware 是什麼,以及為什麼會出現無法載入 API 定義的情況。在本文中,我們將詳細解釋這個問題的原因,並提供解決方案,幫助大家順利解決這個困擾。
我正在使用golang 的http/net
以及github.com/go-openapi/runtime/middleware
來探索go
中的swagger。使用以下程式碼:
func setupandrunhttpserver() { httpport := envstring("http_port", defaulthttpport) httpaddr := net.joinhostport("localhost", httpport) service := planting.newplantingservice() eps := endpoints.newendpointset(*service) httpservermux := transport.newhttphandler(eps) // setup the swagger docs and ui. var sh http.handler = middleware.swaggerui(middleware.swaggeruiopts{}, nil) httpservermux.handle("/docs", sh) // the http listener mounts the go kit http handler we created. httplistener, err := net.listen("tcp", httpaddr) if err != nil { os.exit(1) } // serve using the net/http.servermux creaded in transport package. err = http.serve(httplistener, httpservermux) if err != nil { os.exit(2) } defer httplistener.close() }
當我造訪 http://localhost:8088/docs
時,我得到以下資訊:
乍一看,net/http
函式庫以及 middleware
無法找到相對於伺服器根目錄的 swagger.json
檔案。我將該文件位於:
matthew.hoggan in ~/go/src/project/root on TemplateServer* ⚡ ls -l ./docs/swagger.json -rw-r--r-- 1 matthew.hoggan staff 3880 Nov 30 04:47 ./docs/swagger.json
我的問題是,在部署複製專案之前測試複製專案時,如何告訴 middleware
在目前目錄中哪裡可以找到 swagger.json
?
從原始程式碼看來,您需要執行以下操作:
var sh http.Handler = middleware.SwaggerUI(middleware.SwaggerUIOpts{SpecURL: "./docs/swagger.json"}, nil)
如果未指定 specurl,則預設為:
/swagger.json
以上是無法使用 go-openapi/runtime/middleware 載入 API 定義的詳細內容。更多資訊請關注PHP中文網其他相關文章!