SpringBoot简单整合Swagger
1、引入swagger依赖
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
使用依赖解述:
- springbox 是一个通过扫描代码提取代码中的信息,生成API文档的工具;
- springbox-swagger2 依赖OSA规范文档(描述API的json文件),该组件能够帮助我们自动生成JSON文件;
- 通过springbox-swagger-ui 可以将json文件解析出来;
2、配置注意
Spring Boot 2.6及 更高版本使用的是PathPatternMatcher,
而Springfox使用的路径匹配是基于AntPathMatcher的,所以更改配置如下:
spring:
mvc:
pathmatch:
matching-strategy: ANT_PATH_MATCHER
3、配置类
SwaggerConfig类上添加 Configuration 表明这是一个配置类,添加 EnableSwagger2 开启Swagger配置
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
// 指定构建api文档的详细信息的方法:apiInfo()
.apiInfo(apiInfo())
.select()
// 指定要生成api接口的包路径,这里把controller作为包路径,生成controller中的所有接口
.apis(RequestHandlerSelectors.basePackage("com.yang.controller"))
.paths(PathSelectors.any())
.build();
}
下面这个类是Swagger中接口设定相关信息
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
// 设置页面标题
.title("Spring Boot集成 Swagger2接口总览")
// 设置页面描述
.description("Swagger接口页面")
// 设置联系方式
.contact("空山万籁," + "优快云:http://blog.youkuaiyun.com/KS_wl")
// 设置版本
.version("1.0")
// 构建
.build();
}
这是所需要的实体类
相关注解:
ApiModel 注解用于实体类,表示对类进行说明,用于参数用实体类接收。
ApiModelProperty注解用于类中属性,表示对 model 属性的说明或者数据操作更改。
简化注解
Data注解是通过引入Lombok依赖,实现对代码的简化,减少实体属性的set与get方法,也可以直接使用Setter、Getter注解来代替。
@Data
@ApiModel(value = "用户实体类")
public class User {
@ApiModelProperty(value = "用户唯一标识")
private int id;
@ApiModelProperty(value = "用户姓名")
private String username;
@ApiModelProperty(value = "用户密码")
private String password;
}
Swagger相关注解
@Api 注解用于类上,表示标识这个类是 swagger 的资源。
@ApiOperation 注解用于方法,表示一个 http 请求的操作。
@ApiParam 注解用于参数上,用来标明参数信息。
测试Controller
RestController注解主要用于前后端分离项目,包含了Controller注解和ResponseBody注解
@RestController
@RequestMapping("/swagger")
public class TestController {
@GetMapping("/get/{id}")
public JsonResult<User> getUserinof(@PathVariable @ApiParam(value = "用户唯一标识") int id) {
User user = new User(1, "张三", "123456");
return new JsonResult(user);
}
}