首頁 > 後端開發 > Golang > 主體

無法使用 go-openapi/runtime/middleware 載入 API 定義

王林
發布: 2024-02-13 21:00:22
轉載
1087 人瀏覽過

无法使用 go-openapi/runtime/middleware 加载 API 定义

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中文網其他相關文章!

來源:stackoverflow.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!