如何使用带有现有 swagger.json 的 swagger-ui-dist 从基于 hapi 的服务器提供 swagger ui?

时间:2021-02-12 02:40:04

标签: swagger swagger-ui openapi hapi

我的项目的要点:

  • TypeScript 服务器端 Web 服务器项目(非 SPA)
  • 从同一服务器提供 ui 和我的 api
  • 所有 API 路由都通过路径 /api/v2
  • 使用 hapi 作为服务器
  • 使用tsoa生成两个我的hapi路线我的swagger.json
  • 我在运行时的 swagger 规范内容可在 /swagger

注意:请不要将我指向 hapi-swagger,因为我目前更喜欢 tsoa 的路由生成,这与 hapi-swagger 不兼容。 >

我想在 /api-docs 的服务器上提供 swagger ui,以便它描述我的 swagger.json

docs 表示我应该使用 swagger-ui-dist 通过利用其 getAbsoluteFSPath() 方法来静态提供其内容。我很高兴这样做,但我就是不知道如何配置 swagger-ui-dist 以使用 my swagger 规范,可在 /swagger 获得。 index.html 处的 node_modules/swagger-ui-dist 包括以下内容:

  <body>
    <div id="swagger-ui"></div>

    <script src="./swagger-ui-bundle.js" charset="UTF-8"> </script>
    <script src="./swagger-ui-standalone-preset.js" charset="UTF-8"> </script>
    <script>
    window.onload = function() {
      // Begin Swagger UI call region
      const ui = SwaggerUIBundle({
        url: "https://petstore.swagger.io/v2/swagger.json",
        dom_id: '#swagger-ui',
        deepLinking: true,
        presets: [
          SwaggerUIBundle.presets.apis,
          SwaggerUIStandalonePreset
        ],
        plugins: [
          SwaggerUIBundle.plugins.DownloadUrl
        ],
        layout: "StandaloneLayout"
      })
      // End Swagger UI call region

      window.ui = ui
    }
  </script>

前面提到的 docs 说要静态地提供目录 node_modules/swagger-ui-dist,但他们没有说明如何配置 SwaggerUIBundleurl指向从提供该内容的同一服务器提供的 /swagger。我觉得复制内容不是你应该做的。

我如何从我的服务器提供 swagger ui 以便它显示 my swagger 的文档并允许该 ui 的用户通过 swagger ui 的 Try it out 功能调用端点?

0 个答案:

没有答案
相关问题