Swagger 是一款RESTFUL接口的文档在线自动生成+功能测试功能软件。把swagger整合到SpringBoot中,可以构建强大RESTful API文档。省去接口文档管理工作,修改代码,自动更新,Swagger2也提供了强大的页面测试功能来调试RESTful API。
整合步骤:
1.添加swagger依赖
<properties>
<swagger.version>2.9.2</swagger.version>
</properties>
<dependencies>
<!--swagger2依赖-->
<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>${swagger.version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>${swagger.version}</version>
</dependency>
</dependencies>
2.在config包下添加SwaggerConfig
package com.oracle.config;
import io.swagger.annotations.ApiOperation;
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.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket applicationApi() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(applicationInfo())
.select()
//swagger要扫描的包路径
.apis(RequestHandlerSelectors.basePackage("com.oracle.controller"))
.paths(PathSelectors.any())
.build();
}
private ApiInfo applicationInfo() {
return new ApiInfoBuilder()
.title("你的网站标题")
.description("你的网站描述")
.termsOfServiceUrl("localhost:8080/myblog")
.contact(new Contact("Swagger测试","localhost:8080/myblog/swagger-ui.html","403353606@qq.com"))
.version("1.0")
.build();
}
}
3.在控制器类上添加相关的swagger注解 例如:
package com.oracle.controller;
import com.oracle.entity.Catalog;
import com.oracle.json.JsonData;
import com.oracle.json.JsonResult;
import com.oracle.service.CatalogService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
import java.util.Optional;
@Api("版块模块接口")
@RestController
@RequestMapping("catalog")
public class CatalogController extends BaseController {
@Resource
private CatalogService catalogService;
//查询所有的版块列表
@ApiOperation("查询所有课程版块列表")
@GetMapping("/")
public JsonData queryCatalogList(){
List<Catalog> catalogList = null;
if(redisTemplate.opsForValue().get("catalogList")==null){
Optional<List<Catalog>> optional = catalogService.queryAllCatalogList();
//保存到redis缓存里面
if(optional.isPresent()) {
catalogList = optional.get();
redisTemplate.opsForValue().set("catalogList", catalogList);
}else{
return JsonResult.fail("查询课程版块列表失败!");
}
}
//缓存中有,直接取。
catalogList = (List<Catalog>) redisTemplate.opsForValue().get("catalogList");
return JsonResult.success(catalogList,"查询课程版块列表成功!");
}
}
4.查看swagger接口文档 浏览器输入http://localhost:8080/项目上下文/swagger-ui.html,就可以看到接口文档了。

Swagger2常用注解见下表: |注解|说明| |-|-| |@Api|修饰整个类,描述Controller的作用| |@ApiOperation|描述一个类的一个方法,或者说一个接口| |@ApiParam|单个参数描述| |@ApiModel|用对象来接收参数| |@ApiProperty|用对象接收参数时,描述对象的一个字段| |@ApiResponse|HTTP响应其中1个描述| |@ApiResponses|HTTP响应整体描述| |@ApiIgnore|使用该注解忽略这个API| |@ApiError|发生错误返回的信息| |@ApiImplicitParam|一个请求参数| |@ApiImplicitParams|多个请求参数|