分析
Swagger报错No operations defined in spec! 一般有2个原因:
- basePackage错误;
- path错误;
第1个basePackage错误,主要是扫描的包内没有controller,或者controller类上没有@Controller注解。
其中第2个path错误,path要是全匹配url,url是完整的,包含方法的url,本人因为path只写controller上的url,没写方法上的url,找了1天也没找到原因,看之前项目才发现url不是完整的url;如果不是完整的url,正则是/path/rest/pic/.*
, 正则是 .*
完整可用的配置类如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
@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();
}
}
|