Swagger的集成与使用
Swagger是一个规范和完整的API框架,可用于生成、描述、调用Restful风格的Web服务的接口文档。如果在SpringBoot中使用的话,在项目启动后可以自动生成在线可调用的API文档。
Swagger的集成
- 首先在
pom.xml
中添加springfox官方Swagger依赖;
1 | <!--springfox swagger官方Starter--> |
- 由于Spring默认的路径匹配策略为
PATH_PATTERN_PARSER
,而SpringFox假设为ANT_PATH_MATCHER
,所以需要修改application.yml
配置文件,添加如下配置;
1 | spring: |
- 添加Swagger的Java配置,配置好Api信息和需要生成接口文档的类扫描路径,注意在SpringBoot
2.6.x
以上版本整合时由于兼容性问题需要配置一个BeanPostProcessor
的Bean;
1 |
|
- 访问API文档信息,访问地址:http://localhost:8088/swagger-ui/
Swagger的使用
Swagger主要是通过注解来标注文档内容的。主要有以下注解:
注解名称 | 描述 | 常用属性 |
@Api | 用于类,标识这个类是Swagger的资源 | tags:给该类下的接口设置标签 |
@Tag | 可用于类或方法,声明一个标签 | name:标签名称 description:标签描述 |
@ApiIgnore | 忽略该类的文档生成 | value:添加备注 |
@ApiOperation | 用于方法,用于描述一个HTTP请求方法 | value:给方法添加描述 |
@ApiParam | 用于参数,用于描述请求参数 | value:参数描述 name:参数名称 defaultValue:参数默认值 required:参数是否必填 allowableValues:参数允许范围 type:参数类型 |
@ApiImplicitParam | 代表一个单个API操作,与@ApiImplicitParams联用 | paramType:参数请求类型 dataTypeClass:参数值类型 其他类型同@ApiParam |
@ApiImplicitParams | 多个@ApiImplicitParam注解的集合 | 参数为@ApiImplicitParam数组 |
@ApiModel | 用于类,声明一个Swagger的模型 | value:模型名称 description:模型描述 |
@ApiProperty | 用于参数,声明Swagger模型的属性或填充数据 | value:属性描述 name:属性名称 allowableValues:允许值 |
@ApiResponse | 用于描述一个可能的返回结果 | responseCode:返回状态码 message:返回信息 |
@ApiResponses | @ApiResponse的集合 | 参数为@ApiResponse数组 |
结合Spring Secutiry使用时的注意事项
若访问需要登录认证的接口,则需在访问接口时添加一个合法的Authorization
请求头。
1 | private List<SecurityScheme> securitySchemes() { |
此外,注意需要在Spring Security中配置好Swagger静态资源的无授权访问,比如首页访问路径/swagger-ui/
使用Postman增强Swagger的功能
Postman与Swagger的功能基本一致,但两者各有优劣,可以配合使用。
Postman在阅读JSON格式的对象时更加美观整洁,但是其在文档展示的能力上相比Swagger偏弱。