Swagger是一个用于自动生成、更新、以及调试API接口的文档规范框架。当然,Springfox Swagger2框架就是基于Swagger规范实现的,用于在Spring生态系统中自动生成API接口文档的框架。最后,自动生成的接口文档大概是这样的:
在swagger中,常用注解如下:
一、修饰Controller
@API
修饰整个类,用于描述这个controller的用途。主要用到以下两个参数:
- tags:给这个@Api设置一个TAG,相同TAG的接口会在 Swagger UI 页面显示在一起
- description:这个TAG得描述信息
二、修饰方法
@ApiOperation
修饰一个RESTFul接口的方法(controller里的方法),用于表示这是一个API接口。主要用到以下几个参数:
- value:这个方法的描述信息
- httpMethod:这个接口的请求类型
- produces:这个接口的返回数据类型
- notes:解释说明
@ApiImplicitParam
作用跟@ApiParam类似,用于描述请求的参数。不用之处在于, @ApiImplicitParam需要放在controller的方法上面,通常用于描述请求的参数。 主要用到以下几个参数:
- name:请求的参数名称
- value:请求的参数的描述信息
- dataTypeClass:请求的参数类型
- paramType:参数的请求方式。这里的参数类型可以使用以下五种取值:path(以URL路径的形式提交数据)、query(以URL参数的形式提交数据)、body(以流的形式提交POST数据)、header(参数在请求的header里提交)、form(参数以form表单形式提交)
@ApiImplicitParams
一个接口的请求中存在多个参数时可以使用这个注解,在一个@ApiImplicitParams注解中可以包含多个@ApiImplicitParam注解。
@ApiResponse
修饰一个RESTFul接口的方法,用于描述这个接口的返回信息。主要用到以下几个参数:
- code:返回状态码
- message:这个状态码对应的描述信息
- response:返回的对象类型
三、修饰方法参数
@ApiParam
适用于方法参数位置, 用于描述参数信息。主要用到以下两个参数:
- value:这个参数的描述信息
- required:这个参数是否必填
四、修饰实体类
@ApiModel
修饰实体类,用于描述这个实体类是做什么的
@ApiModelProperty
修饰实体类的一个属性。主要用到以下几个参数:
- name:属性名称
- value:这个属性的描述信息
- required:这个属性是否必填
- example:这个属性的示例
- hidden:是否隐藏这个属性( 隐藏就表示请求的时候不需要填写这个属性,同时上面的其他参数就可以直接省略了 )