Swagger无法获取自定义的API信息,并始终显示默认值

时间:2017-12-10 19:43:24

标签: spring maven spring-boot swagger-ui swagger-2.0

当我尝试将Swagger集成到一个非常简单的Spring Boot REST应用程序中时,Swagger-UI.html不会显示并获取我自定义的API信息。我应该如何更改以下代码,以便Swagger UI页面显示自定义的API信息?我也无法调试SwaggerConfig类,放入断点但是当作为Spring Boot应用程序运行时,断点不会停止。

我在pom.xml中有什么:

<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>2.7.0</version>
</dependency>
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>2.7.0</version>
</dependency>

我的SwaggerConfig课程:

@Configuration
@EnableSwagger2
public class SwaggerConfig {

    @Bean
    public Docket messageApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .groupName("cool-report-api")
                .apiInfo(apiInfo())
                .select()
                .paths(messageApiPaths()).build();
    }

    private Predicate<String> messageApiPaths() {
        return or(regex("/api/topics.*"), regex("/api/message.*"));
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("Cool Message Receiver API")
                .description("Cool Message Receiver REST API Reference")
                .termsOfServiceUrl("http://www.cool-message-receiver.com")
                .contact(new Contact("John Smith", null, "john.smith@cool.com"))
                .license("Cool Proprietary Software")
                .licenseUrl("www.cool-message.com")
                .version("0.1.0")
                .build();
    }

}

但是在我弹出后:运行上面的代码,自定义的API信息似乎不起作用,Swagger仍然显示默认的“Api文档”标题和#34; Apache 2.0&#34;这是我现在看到的:

enter image description here

2 个答案:

答案 0 :(得分:0)

我认为问题是messageApisPath()。

确保添加以下库:

    <dependency>
        <groupId>com.google.guava</groupId>
        <artifactId>guava</artifactId>
        <version>16.0.1</version>
    </dependency>

它包含许多谓词函数。确保你的'或'来自那里。

以下为我工作

private Predicate<String> messageApiPaths() {
    return Predicates.or(PathSelectors.regex("/api/topics.*"), PathSelectors.regex("/api/message.*"));
}

由于

答案 1 :(得分:0)

应该在构建后调用apiInfo,如下所示:

@Bean
public Docket messageApi() {
    return new Docket(DocumentationType.SWAGGER_2)
            .groupName("cool-report-api")
            .select()
            .paths(messageApiPaths())
            .build()
            .apiInfo(apiInfo());
}