Swagger 学习笔记
Swagger 特点
- 世界上最流行的Api框架
- RestFul Api 文档在线自动生成工具 -> Api文档与API定义同步更新
- 支持多种语言(Java,PHP…)
在项目中使用Swagger需要springbox;
- swagger2
- ui
SpringBoot 集成 Swagger
新建 SpringBoot-web 项目
导入相关依赖
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>3.0.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>3.0.0</version>
</dependency>
<!-- 3.0以后版本要添加boot-starter -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-boot-starter</artifactId>
<version>3.0.0</version>
</dependency>编写一个 Hello 工程
配置Swagger-config
package com.at0m.swagger.config; |
- 测试运行访问页面
3.0以前版本 |
配置 Swagger 信息
Swagger 配置(在config下配置)
// 配置Swagger的Docket的bean实例 |
Swagger 配置扫描接口
Docket.select()
// 配置Swagger的Docket的bean实例 |
配置是否启动swagger
// 配置Swagger的Docket的bean实例 |
配置swagger使用环境
在生产环境中使用,在发布的时禁用
- 判断是否为生产环境
flag = false
- 注入
enable()
值
// 配置Swagger的Docket的bean实例 |
配置文档 API 分组
.groupName("at0m") |
配置多个分组,多个Docket实例即可
|
Swagger API Annotation
@Api
该注解将一个Controller(Class)
标注为一个Swagger
资源(API)。在默认情况下,Swagger-Core
只会扫描解析具有@Api
注解的类,而会自动忽略其他类别资源(JAX-RS endpoints,Servlets等等)
的注解。该注解包含以下几个重要属性:
- tags
API分组标签。具有相同标签的API将会被归并在一组内展示,如果设置tags,value值将会被覆盖。 - value
如果tags没有定义,value将作为Api的tags使用 - description
API的详细描述,在1.5.X版本之后不建议使用,目前在3.0.0版本中依然可以使用
@ApiOperation
在指定的(路由)路径上,对一个操作或HTTP方法进行描述。具有相同路径的不同操作会被归组为同一个操作对象。不同的HTTP请求方法及路径组合构成一个唯一操作。此注解的属性有:
value
对操作的简单说明,长度为120个字母,60个汉字。
notes
对操作的详细说明。
httpMethod
HTTP请求的动作名,可选值有:”GET”, “HEAD”, “POST”, “PUT”, “DELETE”, “OPTIONS” and “PATCH”。
code
默认为200,有效值必须符合标准的HTTP Status Code Definitions。
@ApiImplicitParams
注解ApiImplicitParam的容器类,以数组方式存储。
@ApiParam
增加对参数的元信息说明。这个注解只能被使用在JAX-RS 1.x/2.x的综合环境下。其主要的属性有:
- required
是否为必传参数 - value
参数简短说明
@ApiResponses
注解@ApiResponse
的包装类,数组结构。即使需要使用一个@ApiResponse
注解,也需要将@ApiResponse
注解包含在注解@ApiResponses
内
@ApiResponse
描述一个操作可能的返回结果。当REST API请求发生时,这个注解可用于描述所有可能的成功与错误码。可以用,也可以不用这个注解去描述操作的返回类型,但成功操作的返回类型必须在@ApiOperation中定义。如果API具有不同的返回类型,那么需要分别定义返回值,并将返回类型进行关联。但Swagger不支持同一返回码,多种返回类型的注解。注意:这个注解必须被包含在@ApiResponses注解中。
code
HTTP请求返回码。有效值必须符合标准的HTTP Status Code Definitions。message
易于理解的文本消息response
返回类型信息,必须使用完全限定类名,比如“com.at0m.Student.class”。responseContainer
如果返回类型为容器类型,可以设置相应的值。有效值为"List", "Set" or "Map"
,其他任何无效的值都会被忽略。
controller
package com.at0m.swagger.controller; |
Swagger Model Annotation
@ApiModel
提供对Swagger model额外信息的描述。在标注@ApiOperation注解的操作内,所有的类将自动被内省(introspected),但利用这个注解可以做一些更加详细的model结构说明。主要属性有:
- value
model的别名,默认为类名 - description
model的详细描述
@ApiModelProperty
对model属性的注解,主要的属性值有:
- value
属性简短描述 - example
属性的示例值 - required
是否为必须值
实体类配置
package com.at0m.swagger.pojo; |
总结:
通过Swagger给一些比较难理解的属性或者接口,增加注释信息
接口文档实时更新
可以在线测试
注意!!!:正式发布的时候,关闭Swagger!!!出于安全考虑。且节省运行内存。