Swagger-文档框架学习使用笔记
Swagger-文档框架学习使用笔记
对于接口开发,常常与编写文档多多少少脱不了干系。
这时就想有没有什么相关的工具可以使用呢?
What
Swagger 是一个规范且完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。
Swagger 的目标是对 REST API 定义一个标准且和语言无关的接口,可以让人和计算机拥有无须访问源码、文档或网络流量监测就可以发现和理解服务的能力。当通过 Swagger 进行正确定义,用户可以理解远程服务并使用最少实现逻辑与远程服务进行交互。与为底层编程所实现的接口类似,Swagger 消除了调用服务时可能会有的猜测。
简而言之,就是对接项目接口生成API文档、调试功能。
同行对比
以我所接触过的Yapi做对比,Swagger是与项目或模块耦合的,项目运行时才会有Swagger的页面。
How
Version 2.9.2
SpringBoot
引入依赖
1
2
3
4
5
6
7
8
9
10
11
12<!--Swagger开发-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>${swagger.version}</version>
</dependency>
<!--Swagger页面-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>${swagger.version}</version>
</dependency>配置Swagger
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18@Bean
public Docket webApiConfig(){
return new Docket(DocumentationType.SWAGGER_2)
.groupName("Web-Api")
.apiInfo(webApiInfo())
.select()
.paths(PathSelectors.regex("/api/.*"))
//.apis(RequestHandlerSelectors.basePackage("com.aaaxxx.controller"))
.build();
}
private ApiInfo webApiInfo() {
return new ApiInfoBuilder()
.title("网站Api文档")
.description("本文档描述网站微服务接口定义")
.version("1.0")
.contact(new Contact("minmin", "https://github.com/aaaxxx", "[email protected]"))
.build();
}可以通过以下两种方式发布相关API
apis
配置接口(控制器)所在的包进行发布
paths
配置访问路径进行发布
编写Swagger代码
对所涉及的相关API进行两个层面的编写
- Controller
- Model
Swagger的注解
Controller
- @Api
- @ApiOperation
- @ApiImplicitParams
- @ApiImplicitParam
- @ApiParam
Model
- @ApiModel
- @ApiModelProperty
Swagger的使用案例
Controller
1 |
|
Model
1 |
|
踩坑
@ApiImplicitParam
该注解有几个属性值得注意
paramType
该属性有三个参数
- path:标识参数在url中占位
- query:标识参数为GET中的query params
- body:标识参数在请求体中
name
该属性视paramType的值而定,为了万金油,直接与方法参数名保持一致即可。
@ApiModel的value属性与之关联,直接使用类名就能保证万金油
value
这个属性才是你可以随意编写的,表名参数的含义
dataType
这个属性只有两个值,string与int(可以大骆驼峰)
我不知道它为什么不在一些属性中限定一个枚举类
@ApiParam
该注解打在方法的参数前,用于标记Java的集合类,具体看使用案例
文章可能还会不定期更新,如其他Swaager版本的使用或与其他框架的整合
Swagger-文档框架学习使用笔记
https://blog.gugu.dev/2024-02-21/Swagger-文档框架学习使用笔记/