spring boot,如何让swagger UI位于/swagger/路径下?

问题描述 投票:0回答:1

我们有一个基本的 spring boot api 服务,它公开 REST 端点,例如https://myservice.com/customer/gethttps://myservice.com/country/get

我们集成了 swagger,但 swagger 的 URL 是根。

例如https://myservice.com/swagger-ui.html

而且所有swagger各种资源也都在根目录下(比如webjars)

由于我们的服务位于代理后面,因此我们需要一个针对所有 swagger 资源的规则,例如 /swagger/*

有没有办法让 swagger (及其资源)从特定路径而不是根路径获得服务?

这是我们的 SpringFoxConfig.java:

@Configuration
@EnableSwagger2
@Profile({"!prod && swagger"})
public class SpringFoxConfig {
    @Bean
    public Docket api() {
        return new Docket(DocumentationType.SWAGGER_2)
                .select()
                .apis(RequestHandlerSelectors.any())
                .paths(PathSelectors.any())
                .build()
                .apiInfo(apiInfo());
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("OUR-API")
                .description("Our api service endpoints")
                .version("mixed")
                .build();
    }
}

这是 WebAppConfig.java

@Configuration
@EnableWebMvc
public class WebAppConfig extends WebMvcConfigurerAdapter {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");
        registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
    }

}

swagger 从 root 提供哪些资源的示例,我们需要将其移动到 /swagger/ 或类似的位置:

enter image description here

我们的 swagger 版本(版本 3 无法运行,所以我们使用 2.8)

    <dependencies>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.8.0</version>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.8.0</version>
        </dependency>
spring-boot swagger swagger-ui
1个回答
0
投票

更新您的 WebAppConfig

@Configuration
@EnableWebMvc
public class WebAppConfig extends WebMvcConfigurerAdapter {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/swagger/swagger-ui.html")
                .addResourceLocations("classpath:/META-INF/resources/");
        registry.addResourceHandler("/swagger/webjars/**")
                .addResourceLocations("classpath:/META-INF/resources/webjars/");
    }
    }

还有你的application.properties

springfox.documentation.swagger.v2.path=/swagger/api-docs
springfox.documentation.swagger-ui.base-url=/swagger
© www.soinside.com 2019 - 2024. All rights reserved.