zoukankan      html  css  js  c++  java
  • swagger 支持动态host和basePath

      swagger-ui中的 host 和 basePath 等配置通过 swagger 的 /v2/api-doc 接口返回。在项目启动时可以提前设置 host 和 basePath,但是java代码无法动态支持多租户的 host 和 basePath,只能通过前端修改api的请求路径。具体步骤如下:

    1. 删除pox.xml 中的 springfox-swagger-ui 依赖,将 springfox-swagger2 版本设为 2.9.2。
    2. 去maven官网下载 springfox-swagger-ui 的jar包,解压缩,将里面的静态资源放到项目的java/resources/META-INF/resources目录下。
    3. 在Swagger2Config中新增静态资源的controller:
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        // 解决swagger无法访问
        registry.addResourceHandler("/swagger-ui.html")
                .addResourceLocations("classpath:/META-INF/resources/");
        // 解决swagger的js文件无法访问
        registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
    }
    1. 在pox.xml 的build/resources中新增需要打包的静态资源。默认不加resources会将java/resources中的所有文件打包到jar文件中。
    2. 克隆 https://github.com/springfox/springfox/ 项目的tag 2.9.2,cd 到 springfox/springfox-swagger-ui/src/web/目录,修改 package.json 中 webpack的版本:
    "webpack": "^4.20.2", 
    "webpack-cli": "^3.1.1`
    

    js/springfox.js 中的 SwaggerUIBundle 中增加插件配置,可以根据需要自行修改spec配置文件:

     plugins: [
            SwaggerUIBundle.plugins.DownloadUrl,
            {
              statePlugins: {
                spec: {
                  wrapActions: {
                    updateSpec: function (oriAction, system) {
                      return (spec) => {
                        var originSpec = JSON.parse(spec);
                        originSpec.host = window.location.host;
                        originSpec.basePath = window.location.pathname
                          .split("/")
                          .slice(0, -1)
                          .join("/");
                        var newSpec = JSON.stringify(originSpec);
                        return oriAction(newSpec);
                      };
                    },
                  },
                },
              },
            },
          ]

    运行 npm run build 打包 springfox.js.
    6. 将上述文件替换 java 项目中的 springfox.js 即可。

  • 相关阅读:
    LOJ#551 Matrix
    洛谷P5163 WD与地图
    洛谷P4831 Scarlet loves WenHuaKe
    LOJ#6118 鬼牌
    支配树
    线性插值
    PropertiesConfiguration
    ThreadLocal
    Thread
    FastJson
  • 原文地址:https://www.cnblogs.com/kevin2chen/p/13757514.html
Copyright © 2011-2022 走看看