在SpringFox SwaggerUI中删除基本错误控制器

时间:2015-10-05 05:39:01

标签: swagger-ui swagger-2.0 springfox

有没有办法可以从springfox swagger-ui中删除“basic-error-controller”?

照片:

enter image description here

8 个答案:

答案 0 :(得分:23)

您可以将请求处理程序选择器限制为仅扫描项目的包:

    return new Docket( DocumentationType.SWAGGER_2)
        .select()
        .apis( RequestHandlerSelectors.basePackage( "your package" ) )
        ...

答案 1 :(得分:6)

  • 可以使用 Predicates.not()来完成。

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

答案 2 :(得分:4)

我认为,最优雅的解决方案是仅将@RestController控制器包括在内,唯一需要牢记的是,用该注释对所有REST控制器进行注释:

new Docket(DocumentationType.SWAGGER_2)
            .select()
            .apis(RequestHandlerSelectors.withClassAnnotation(RestController.class))
            .paths(PathSelectors.any())
            .build();

由于BasicErrorController仅用@Controller注释,因此摇摇晃晃将避免在定义文件中使用BasicErrorController。当然,您可以使用自定义注释而不是@RestController来将REST控制器标记为可摇摇欲坠的控制器。

答案 3 :(得分:2)

例如,如果您的父软件包是com.app.microservice

package com.app.microservice;

然后使用以下代码,它将仅显示软件包中的控制器,并禁用/排除其他控制器

@Configuration
@EnableSwagger2
public class SwaggerConfig {

    @Bean
    public Docket api() {
        return new Docket(DocumentationType.SWAGGER_2)
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.app.microservice"))
                .build();
    }

enter image description here

答案 4 :(得分:1)

尝试了很多解决方案后,对我没有任何帮助。最后,我了解了最基本的内容,即确保已在其中定义了 swagger配置文件和主方法文件 的文件位于 相同的软件包

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

Please check this image

答案 5 :(得分:1)

这可以通过将@Bean的定义移至主类(带有@SpringBootApplication的主类)并在this.getClass().getPackageName()中使用其basePackage()来完成:

@Bean
public Docket swagger() {
    return new Docket(DocumentationType.SWAGGER_2)
            .select()
            .apis(RequestHandlerSelectors.basePackage(this.getClass().getPackageName()))
            .paths(PathSelectors.any())
            .build()
            .useDefaultResponseMessages(false);
}

答案 6 :(得分:1)

我的问题只是我忘了用@Bean注释Docket api()方法。

答案 7 :(得分:0)

你也可以使用springfox-swagger2注释。 springfox.documentation.annotations.ApiIgnore

@ApiIgnore
public class ErrorController {

这会从文档中排除该类。