SpringCloud Config Server:与SwaggerUI的路径映射冲突

时间:2018-10-18 16:07:15

标签: spring-boot spring-cloud swagger-ui spring-cloud-vault-config

我正在运行一个SpringBoot配置服务器(带有Vault后端),并试图向其中添加Springfox SwaggerUI。但是由于我不希望配置服务器使用前缀(spring.cloud.config.server.prefix,所以配置服务器和SwaggerUI之间的路径映射会导致冲突。

我所有的客户都使用以下模式询问配置服务器:

{config-server-host}/{application-name}/{profile}

例如:

{config-server-host}/test-app-one/dev
{config-server-host}/test-app-two/prod

但是我的SwaggerUI路径映射到:

{config-server-host}/swagger-ui.html

结果,配置服务器抱怨找不到应用程序“ swagger-ui”或未指定配置文件。

这是SwaggerUI的Docket bean的配置:

@Configuration
@EnableSwagger2
public class SwaggerConfig {

    @Bean
    public Docket api() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                .paths(not(regex("/error.*")))
                .paths(any())
                .build()
                .pathMapping("/");
    }

    private ApiInfo apiInfo() {
        Contact contact = new Contact({secret}, {secret}, {secret});
        return new ApiInfoBuilder().title({secret})
                                   .description({secret})
                                   .version({secret})
                                   .contact({secret})
                                   .build();
    }
}

所有这些都会导致以下问题:我不能为配置服务器添加前缀,并且我希望SwaggerUI url映射到标准。有没有可能告诉配置服务器它应该排除/swagger*路径?

1 个答案:

答案 0 :(得分:1)

spring.cloud.config.server.prefix文件中的bootstrap.properties参数为我解决了这个问题。