Spring Boot是很优秀的框架,它的出现简化了新Spring应用的初始搭建以及开发过程,大大减少了代码量,目前已被大多数企业认可和使用。这个专栏将对Spring Boot框架从浅入深,从实战到进阶,不但我们要懂得如何去使用,还要去剖析框架源码,学习其优秀的设计思想。汇总目录链接:【Spring Boot实战与进阶】学习目录
一、引入依赖
Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。
总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法、参数和模型紧密集成到服务器端的代码,允许 API 来始终保持同步。Swagger 让部署管理和使用功能强大的 API 从未如此简单。
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-boot-starter</artifactId>
<version>3.0.0</version>
</dependency>
二、配置类
@Configuration
@EnableOpenApi
public class Swagger3Config {
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.OAS_30)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("Restful API接口")
.description("Swagger3接口文档")
.version("1.0")
.build();
}
}
说明:
- @EnableOpenApi:开启swagger功能(@EnableSwagger2在3.0被移除)
三、Controller测试类
@Api("TestController")
@RestController
public class TestController {
@ApiOperation(value = "添加用户", notes = "添加用户")
@PostMapping("/addUser")
public void addUser() {
}
@ApiOperation(value = "获取用户信息", notes = "获取用户信息")
@GetMapping("/getUser")
public void getUser() {
}
}
四、启动项目
访问地址:http://localhost:8080/swagger-ui/index.html
五、拓展知识
1、如何配置线上时关闭swagger?
# 是否开启swagger,线上环境一般是需要关闭的
springfox:
documentation:
auto-startup: false
2、常用的配置注解
Annotation | Attribute | Target Property | Description |
---|---|---|---|
ApiModelProperty | value | ModelProperty#description | @ApiModelProperty(value="${property1.description}") |
ApiModelProperty | description | ModelProperty#description | @ApiModelProperty(notes="${property1.description}") |
ApiParam | value | Parameter#description | @ApiParam(value="${param1.description}" |
ApiImplicitParam | value | Parameter#description | @ApiImplicitParam(value="${param1.description}") |
ApiOperation | notes | Operation#notes | @ApiOperation(notes="${operation1.description}") |
ApiOperation | summary | Operation#summary | @ApiOperation(value="${operation1.summary}") |
RequestParam | defaultValue | Parameter#defaultValue | @RequestParam(defaultValue="${param1.defaultValue}") |
RequestHeader | defaultValue | Parameter#defaultValue | @RequestHeader(defaultValue="${param1.defaultValue}") |