Swagger 可以自动生成在线接口文档,界面可视化的同时保证了便利的测试接口。
1. Swagger2 介绍
Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。
随着前后端技术的日渐成熟,前后端的交互就只有接口了,前端请求接口获取数据,所以接口的格式化也就相当重要,有一个标准格式的接口文档在开发过程中是相当重要的,swagger就是这么一个在线的接口文档,在SpringBoot的集成之中也相当便利。
2. maven 配置Swagger2依赖
创建一个SpringBoot web 项目,然后在pom.xml中添加如下依赖:
<!-- 引入swagger包 -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.2.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.2.2</version>
</dependency>
3. Swagger2 配置
在Springboot启动类的同级目录下面创建一个config的包,然后创建一个配置Swagger2 的配置类。
package com.bowen.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
/**
* <h3>springboot-study</h3>
* <p>Swagger 配置类</p>
* @author : zhang.bw
* @date : 2020-08-01 16:16
**/
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
// 指定构建api文档的详细信息的方法:apiInfo()
.apiInfo(apiInfo())
.select()
// 指定要生成api接口的包路径,这里把controller作为包路径,生成controller中的所有接口
.apis(RequestHandlerSelectors.basePackage("com.bowen.controller"))
.paths(PathSelectors.any())
.build();
}
/**
* 构建api文档的详细信息
* @return
*/
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
// 设置页面标题
.title("Spring Boot 集成Swagger接口文档")
// 设置接口描述
.description("Spring Boot 技术栈快速实战课程")
// 设置联系方式
.contact("微信公众号【猿码天地】," + "")
// 设置版本
.version("1.0")
// 构建
.build();
}
}
配置代码说明:
- 使用 @Configuration 注解,标识这是一个配置类,项目启动的时候会自动调用加载,@EnableSwagger2 注解的作用是自动开启swagger2。
- apiInfo() 方法里面的参数可以自己设定,在第一个方法中,我们除了可以根据接口所在的包对应生成接口文档还可以根据项目中是否有方法使用了 @ApiOperation注解来判断是否生成api文档。
4. Controller 测试编写以及注解说明
上面我们配置好了swagger api生成的配置之后就可以编写测试的controller,创建一个与config同级的包controller,然后里面写一个TestController
package com.bowen.controller;
import com.bowen.entiy.JsonResult;
import com.bowen.entiy.User;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.*;
/**
* <h3>springboot-study</h3>
* <p>测试Controller</p>
* @author : zhang.bw
* @date : 2020-08-01 16:16
**/
@RestController
@RequestMapping("/test")
@Api(value = "Swagger2 在线接口文档")
public class TestController {
@GetMapping("/get/{id}")
@ApiOperation(value = "根据用户ID获取用户信息")
public JsonResult<User> getUserInfo(@PathVariable @ApiParam(value = "用户ID") Long id) {
User user = new User(id, "猿码天地", "微信公众号【猿码天地】");
return new JsonResult(user);
}
@PostMapping("/insert")
@ApiOperation(value = "添加用户信息")
public JsonResult<Void> insertUser(@RequestBody @ApiParam(value = "用户信息") User user) {
// 业务逻辑省略
return new JsonResult<>();
}
}
@RestController 相当于@Controller+@ResponseBody 注解,让标识的这个类返回json格式的数据。
类上面加上@Api的注解,说明这个类要生成api文档,并给予描述。相当于可以根据这个类作为类别的划分。在类里面的方法加上@ApiOperation 注解 用来描述这个方法(接口)是用来做什么的。
5. 接口测试
完成配置后,启动项目,浏览器输入localhost:8080/swagger-ui.html
测试一个接口,根据用户ID获取用户信息:
返回结果:
6. 总结
本文主要讲解了swagger2的配置,用法,以及测试,整个流程都讲解的非常详细,相信通过本节课程的学习,对Spring Boot 集成Swagger接口文档有了全面的认识。