配置Swagger
1、Swagger实例Bean是Docket,所以通过配置Docket实例来配置Swaggger
SwaggerConfig:
@Configuration
@EnableSwagger2// 开启Swagger2的自动配置
public class SwaggerConfig {
@Bean //配置docket以配置Swagger具体参数
public Docket docket() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo());
}
//配置Swagger信息=apiInfo
private ApiInfo apiInfo(){
//作者信息
Contact contact = new Contact("卡卡发", "https://www.cnblogs.com/kakafa/", "1234567890@qq.com");
return new ApiInfo(
"mySwaggerApiDocument",
"Api Documentation",
"1.0",
"https://www.cnblogs.com/kakafa/",
contact,
"Apache 2.0",
"http://www.apache.org/licenses/LICENSE-2.0",
new ArrayList<VendorExtension>());
}
}
启动后:http://localhost:8080/swagger-ui.html

2、配置扫描接口
@Bean //配置docket以配置Swagger具体参数
public Docket docket() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
//RequestHandlerSelectors:配置要扫描接口的方式;basePackage:指定要扫描的包
//RequestHandlerSelectors.basePackage("com.kakafa.swaggerpra.controller")
.apis(RequestHandlerSelectors.any())//代表扫描全部的包
.paths(PathSelectors.ant("/kakafa/swaggerpra/config/**"))//过滤什么路径
.build();
}
3、配置Swagger开关
@Bean //配置docket以配置Swagger具体参数
//enable():是否启用swagger .enable(false):则swagger不能在浏览器中使用
public Docket docket() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.enable(false)
.select()
.apis(RequestHandlerSelectors.any())//代表扫描全部的包
.build();
}
- 如何动态配置当项目处于test、dev环境时显示swagger,处于prod时不显示?
@Bean //配置docket以配置Swagger具体参数
public Docket docket(Environment environment) {
//设置要显示的swagger环境
Profiles profiles=Profiles.of("dev");
//获取项目的环境
boolean flag = environment.acceptsProfiles(profiles);//判断是否处在自己设定的环境中
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.enable(flag)//是否启用swagger .enable(false):则swagger不能在浏览器中使用
.select()
.apis(RequestHandlerSelectors.any())//代表扫描全部的包
.build();
}

当激活开发环境后:可以访问了


4、配置API分组
- 如果没有配置分组,默认是default。

- 通过groupName()方法即可配置分组
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.groupName("kakafa")
.enable(flag)//是否启用swagger .enable(false):则swagger不能在浏览器中使用
.select()
.apis(RequestHandlerSelectors.any())//代表扫描全部的包
.build();

- 如何配置多个分组?配置多个分组只需要配置多个docket即可
@Bean
public Docket docket1(){
return new Docket(DocumentationType.SWAGGER_2).groupName("group1");
}
@Bean
public Docket docket2(){
return new Docket(DocumentationType.SWAGGER_2).groupName("group2");
}
@Bean
public Docket docket3(){
return new Docket(DocumentationType.SWAGGER_2).groupName("group3");
}
5、实体类配置
- 新建一个实体类
@ApiModel("用户实体")
public class User {
@ApiModelProperty("用户名")
public String username;
@ApiModelProperty("密码")
public String password;
}

- 只要这个实体在请求接口的返回值上(即使是泛型),都能映射到实体项中
@RequestMapping("/getUser")
public User getUser(){
return new User();
}
- 注意:并不是因为@ApiModel这个注解让实体显示在这里了,而是只要出现在接口方法的返回值上的实体都会显示在这里,而@ApiModel和@ApiModelProperty这两个注解只是为实体添加注释的

总结:

浙公网安备 33010602011771号