【问题标题】:Webjars - Add configuration to Swagger-UI webjarWebjars - 将配置添加到 Swagger-UI webjar
【发布时间】:2022-08-13 21:55:20
【问题描述】:

我正在使用Swagger-UI Webjar,我想通过查询参数包含我们的自定义 URL。

Problem is this isn\'t enabled by default anymore.

我需要在 Swagger-UI 中添加一个configuration option or configuration file,但如果可以的话,我似乎找不到任何关于它的文档。因为Webjars documentation 在这方面非常空闲,也无法在 Swagger-UI Webjar README 中得到任何更明智的选择。

有谁知道这是否可行,如果可以,也可以为我指明正确的方向怎么做?

    标签: java maven swagger swagger-ui webjars


    【解决方案1】:

    面临同样的问题,并提出了两种(类似的)解决方法:

    选项 1:覆盖 META-INF 中的 'swagger-initializer.js'

    从 swagger-ui webjars 包中获取 swagger-initializer.js 并将其复制到以下路径(请确保它与您的版本匹配,我使用的是 4.13.2):

    /src/main/resources/META-INF/resources/webjars/swagger-ui/4.13.2/swagger-initializer.js

    然后根据您的需要调整 swagger-initializer.js,例如激活queryConfigEnabled:

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    // adjusted from /webjars/swagger-ui/4.13.2/swagger-initializer.js
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    
    window.onload = function() {
      //<editor-fold desc="Changeable Configuration Block">
    
      // the following lines will be replaced by docker/configurator, when it runs in a docker-container
      window.ui = SwaggerUIBundle({
        urls: [{url:"https://darosh.github.io/openapi-directory-lite/specs/github.com/v3.json", name: "github"},{url: "https://petstore.swagger.io/v2/swagger.json", name: "petstore"}],
        dom_id: '#swagger-ui',
        deepLinking: true,
        queryConfigEnabled: true, // <-- I added this line
        presets: [
          SwaggerUIBundle.presets.apis,
          SwaggerUIStandalonePreset
        ],
        plugins: [
          SwaggerUIBundle.plugins.DownloadUrl
        ],
        layout: "StandaloneLayout"
      });
    
      //</editor-fold>
    };
    

    我在 Spring Boot 应用程序中成功测试了这种方法。

    选项 2:使用自定义 swagger-initializer.js 创建自定义 html

    从 swagger-ui webjars 包中获取 index.html 和 swagger-initializer.js 并将其复制到您提供服务的路径。在 Spring Boot 应用程序中,例如:

    src/main/resources/static/swagger-initializer.js
    src/main/resources/static/swagger-ui.html (为了清楚起见,我将它从 index.html 重命名为 swagger-ui.html)

    现在调整 html 文件以指向 swagger-ui 资源的正确 webjars 位置并指向您自己的 swagger-initializer.js:

    <!--------------------------------------------------------------------------------------------------------------------->
    <!-- adjusted from webjars/swagger-ui/4.13.2/schema-template.json-->
    <!--------------------------------------------------------------------------------------------------------------------->
    
    <!-- HTML for static distribution bundle build -->
    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <title>Swagger UI by Fable</title>
      <link rel="stylesheet" type="text/css" href="/webjars/swagger-ui/swagger-ui.css" />
      <link rel="stylesheet" type="text/css" href="/webjars/swagger-ui/index.css" />
      <link rel="icon" type="image/png" href="/webjars/swagger-ui/favicon-32x32.png" sizes="32x32" />
      <link rel="icon" type="image/png" href="/webjars/swagger-ui/favicon-16x16.png" sizes="16x16" />
    </head>
    
    <body>
    <div id="swagger-ui"></div>
    <script src="/webjars/swagger-ui/swagger-ui-bundle.js" charset="UTF-8"> </script>
    <script src="/webjars/swagger-ui/swagger-ui-standalone-preset.js" charset="UTF-8"> </script>
    <script src="/swagger-initializer.js" charset="UTF-8"> </script>
    </body>
    </html>
    

    现在您可以根据需要调整自己的 swagger-initializer.js(例如,请参见选项 1)。 我在 Spring Boot 应用程序中成功测试了这种方法。

    最后的笔记

    虽然选项 1 只需要调整一个文件,但选项 2 对我来说似乎更干净、更灵活。请注意,在选项 1 中,每当您更新 webjar 的版本时,您必须调整自定义 swagger-initializer.js 的路径,因为该版本已在路径中编码。

    【讨论】:

      猜你喜欢
      • 2015-12-14
      • 2015-12-17
      • 2016-07-31
      • 2019-04-24
      • 2022-01-20
      • 1970-01-01
      • 1970-01-01
      • 2018-06-23
      • 1970-01-01
      相关资源
      最近更新 更多