Spring 应用程序中的多个 swagger-ui html 页面

Sab*_*ina 7 spring swagger swagger-ui springfox

我正在构建一个应用程序,我希望有两个 swagger url:

http://localhost:8080/order-swagger.ui.html

http://localhost:8080/inventory-swagger.ui.html

我读了很多文章但没有找到任何解决方案。我发现定义两个 doket bean 但它并不能有效地构建两个 html 页面。它在右上角的下拉列表中创建 2 个项目。

如果您能提供如何操作,我们将不胜感激。

dev*_*ock 7

除了这两个Docketbean 之外,您还可以添加几个 URL 重定向规则来路由/order-swagger.ui.html/inventory-swagger.ui.html选择/swagger-ui.html正确的组。我定义了一个WebMvcConfigurerbean 来执行重定向,然后获得了两个单独的 URL,http://localhost:8080/order-swagger.ui.html并分别显示了和端点http://localhost:8080/inventory-swagger.ui.html的 API 定义。Bean定义如下:/order/inventory

    @Bean
    public Docket orderDocket() {
        return new Docket(DocumentationType.SWAGGER_2)
                .groupName("order")
                .select().paths(path -> path.endsWith("/order"))
                .build();
    }

    @Bean
    public Docket inventoryDocket() {
        return new Docket(DocumentationType.SWAGGER_2)
                .groupName("inventory")
                .select().paths(path -> path.endsWith("/inventory"))
                .build();
    }

    @Bean
    public WebMvcConfigurer webMvcConfigurer() {
        return new WebMvcConfigurer() {
            @Override
            public void addViewControllers(ViewControllerRegistry registry) {
              registry.addRedirectViewController("order-swagger.ui.html", "/swagger-ui.html?urls.primaryName=order");
              registry.addRedirectViewController("inventory-swagger.ui.html", "/swagger-ui.html?urls.primaryName=inventory");
            }
        };
    }
Run Code Online (Sandbox Code Playgroud)