swagger报错No operations defined in spec!解决

swagger报错No operations defined in spec! 一般有2个原因:

  1. basePackage错误;
  2. path错误;

其中第2个path错误,path要是全匹配url,url是完整的,包含方法的url,本人因为path只写controller上的url,没写方法上的url,找了1天也没找到原因,看之前项目才发现url不是完整的url;如果不是完整的url,正则是/path/rest/pic/.*, 正则是 .*;

第1个basePackage错误,主要是扫描的包内没有controller,或者controller类上没有@Controller注解。

 完整可用的配置类如下:

@Configuration
@EnableSwagger2
public class Swagger2Config {
    @Value("${swagger.enable}")
    boolean swagger2enable;

    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .enable(swagger2enable)
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.test.controller"))
                .paths(doFilteringRules())
                .build();
    }

    private Predicate<String> doFilteringRules() {
 //       return PathSelectors.any();
 //       return PathSelectors.regex("/report/.*");
//		return Predicates.not(PathSelectors.regex("/error.*"));
//		return or(regex("/hello.*"), regex("/rest/adxSspFinanceManagement.*"));//success
        return or(regex("/rest/pic/url/query"),  //此处必须为完整的url,到方法级别
                regex("/rest/text/url/query/.*") //部分url的正则是 .*
//                regex("/api/v1/pop/bms/audit/.*")
        );
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("Check APIs")
                .description(" 测试环境地址:http://10.179.88.216:8083")
                .termsOfServiceUrl("http://10.179.88.216:8083")
                .contact("开发团队")
                .version("1.0")
                .build();
    }

}

swagger报错No operations defined in spec!解决

swagger报错No operations defined in spec!解决

相关推荐