Swagger2
一、Swagger2简介
- 号称世界上最流行的Apo框架
- Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法,参数和模型紧密集成到服务器端的代码,允许API来始终保持同步。
- 直接运行,可以在线测试API接口
- 支持多钟语言
官网:https://swagger.io/
需要springbox
- swagger2
- ui
SpringBoot集成Swagger
1. 导入相关依赖(3.0.0版本)
- springfox-swagger2
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>3.0.0</version>
</dependency>
- springfox-swagger-ui
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>3.0.0</version>
</dependency>
- springfox-boot-starter
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-boot-starter</artifactId>
<version>3.0.0</version>
</dependency>
2.配置Swagger
测试是否能访问Swagger页面:http://localhost:8080/swagger-ui/index.html#/
访问成功
2.1)Swagger的Bean实例Docket
配置成功显示页面将改变为:
2.2)Swagger配置扫描接口
//配置Swagger的Docket的bean实例
@Bean
public Docket docket(){
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.groupName("顾优秀")//配置API文档的分组
.enable(true)//enable:是否启动Swagger,如果为False不启动,True启动
.select()
//RequestHandlerSelectors:配置要扫描接口的方式
.apis(RequestHandlerSelectors.any())
//any():扫描全部
//none():不扫描
//withClassAnnotation():扫描类上的注解
//basePackage():扫描指定的包
.paths(PathSelectors.any())
//paths()过滤什么路径
.build();
}
2.2.1)Swagger配置多个分组,Docket实例即可
@Bean
public Docket docket1(){
return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).groupName("顾");
}
@Bean
public Docket docket2(){
return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).groupName("优");
}
@Bean
public Docket docket3(){
return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).groupName("秀");
}
实现效果:
2.2.2)Swagger常用注释注解
@RestController
public class HeellowController {
@GetMapping("/hello")
public String hello(){
return "hello";
}
@ApiOperation("User控制类")//接口名注释
@PostMapping("/user") //在外面的接口中,只要返回值存在实体类它就会扫描
public User user(@ApiParam("用户名") String name){
return new User();
}
}
@ApiModel("用户实体类") //类名注释
public class User {
@ApiModelProperty("用户名") //字段属性名注释
public String name;
@ApiModelProperty("年龄")
public int age;
@ApiModelProperty("地址")
public String address;
@ApiModelProperty("密码")
public String passworld;
}
使用后效果: