Swagger 注解使用

API作用范围使用位置
@Api协议集描述用于controller类上
@ApiOperation协议描述用在controller的方法上
@ApiImplicitParams非对象参数集用在controller的方法上
@ApiImplicitParam非对象参数描述用在@ApiImplicitParams的方法里边
@ApiResponsesResponse集用在controller的方法上
@ApiResponseResponse用在 @ApiResponses里边
@ApiModel描述返回对象的意义用在返回对象类上
@ApiModelProperty对象属性用在出入参数对象的字段上
@ApiParam协议描述用在方法、参数、类的字段上

使用位置即用在类上,对请求类进行描述。标识一个Controller类是Swagger文档类。

属性名称属性类型属性默认值属性描述
valueString“”描述,无实际意义。
tagsString[]“”分组
basePathString“”基本路径
protocolsStringint请求协议
authorizationsAuthorization[]@Authorization(value = “”)高级特性认证时的配置
hiddenbooleanfalse是否隐藏(不显示,默认为false)

value属性作用在类和作用在方法上都用于描述;

tags属性作用在类和作用在方法上都用于分组,但分组的效果区别很大:

tags作用在类上时,会对全局的方法分组,即根据tags属性值复制多份,此时方法上的tags值无效,方法上tags配或不配效果都一样。

tags作用在方法上时,会根据当前类的所有方法的tags值做分组,粒度更细。

注意:java和scala在@Api注解上使用的区别

  1. *java
  2. @Api(tags = "Swagger测试相关接口")
  3. @RestController
  4. *scala
  5. @Api(tags = Array("Swagger测试相关接口"))
  6. @RestController

用在方法上,对请求方法进行描述。

属性名称属性类型属性默认值属性描述
valueString“”描述
notesString“”详细描述
tagsString[]“”分组
responseClass<?>Void.class响应参数类型
responseReferenceString[]“”指定对响应类型的引用,本地/远程引用,并将覆盖任何其它指定的response()类
httpMethodString“”http请求方式,如:GET、HEAD、POST、PUT、DELETE、OPTION、SPATCH
hiddenbooleanfalse是否隐藏(不显示)默认为false
codeint200http的状态码
extensionsExtension[]@Extension(properties = @ExtensionProperty(name = “”, value = “”)扩展属性
  1. @GetMapping("test1")
  2. @ApiOperation(value = "test1接口",notes = "test1接口详细描述")
  3. public ApiResult<String> test1(@RequestParam String aa, @RequestParam String bb, @RequestParam String cc) {
  4. return ApiUtil.success("success");
  5. }

常用在方法上,对请求参数列表进行描述。 其中的value属性可包含多个@ApiImplicitParam,对每个参加进行具体的描述。

属性名称属性类型属性默认值属性描述
valueString“”描述

用在方法上,对请求参数进行描述。当需要对多个参数进行描述时,作为@ApiImplicitParams的属性使用。

属性名称属性类型属性默认值属性描述
valueString“”描述
nameString“”参数说明
defaultValueString“”默认值
allowableValuesString“”参数允许值
requiredbooleanfalse是否必填,默认false
accessString“”参数过滤
allowMultiplebooleanfalse参数是否可以通过多次出现来接受多个值,默认不允许
dataTypeString“”参数的数据类型,可以使类名或原始数据类型
dataTypeClassClass<?>Void.class参数的数据类型,如果提供则覆盖 dataType
paramTypeString“”参数类型,有效值为 path, query, body, header, form
exampleString“”非body类型的参数示例
examplesExample@Example(value = @ExampleProperty(mediaType = “”, value = “”))body类型的参数示例
typeString“”添加覆盖检测到的类型的功能
formatString“”添加提供自定义format格式的功能
readOnlybooleanfalse添加被指定为只读的功能
  1. @GetMapping("test1")
  2. @ApiOperation(value = "test1接口",notes = "test1接口详细描述")
  3. @ApiImplicitParams(value = {
  4. @ApiImplicitParam(name = "aa",value = "aa的说明",defaultValue = "1",allowableValues = "1,2,3",required = true),
  5. @ApiImplicitParam(name = "bb",value = "bb的说明",defaultValue = "1",allowableValues = "1,2,3",required = true),
  6. @ApiImplicitParam(name = "cc",value = "cc的说明",defaultValue = "2",allowableValues = "1,2,3",required = true),
  7. })

用在方法、参数、类的字段上,对请求参数进行描述。

属性名称属性类型属性默认值属性描述
valueString“”描述
nameString“”参数说明
defaultValueString“”默认值
allowableValuesString“”参数允许值
requiredbooleanfalse是否必填,默认false
accessString“”参数过滤
allowMultiplebooleanfalse参数是否可以通过多次出现来接受多个值,默认不允许
dataTypeString“”参数的数据类型,可以使类名或原始数据类型
dataTypeClassClass<?>Void.class参数的数据类型,如果提供则覆盖 dataType
paramTypeString“”参数类型,有效值为 path, query, body, header, form
exampleString“”非body类型的参数示例
examplesExample@Example(value = @ExampleProperty(mediaType = “”, value = “”))body类型的参数示例
typeString“”添加覆盖检测到的类型的功能
formatString“”添加提供自定义format格式的功能
readOnlybooleanfalse添加被指定为只读的功能
  1. @GetMapping("test2")
  2. @ApiOperation(value = "test2接口",notes = "test2接口详细描述")
  3. public ApiResult<TestRes> test2(@ApiParam(value = "aa的说明") @RequestParam String aa, @ApiParam(value = "bb的说明") @RequestParam String bb) {
  4. return ApiUtil.success(new TestRes());
  5. }

用在类上,对请求、响应类,实体类进行描述。

属性名称属性类型属性默认值属性描述
valueString“”为提供模型的替代名称,默认情况下,使用类名
descriptionString“”类的描述
parentClass<?> parentVoid.class为模型提供父类以允许描述继承关系
discriminatoryString“”支持模型继承和多态,使用鉴别器的字段的名称,可以断言需要使用哪个子类型
subTypesbooleanfalse是否必填,默认false
accessClass<?> parentVoid.class从此模型继承的子类型数组
referencebooleanfalse指定对应类型定义的引用,覆盖指定的任何其他元数据

用在类上,对请求、响应类,实体类进行描述。

属性名称属性类型属性默认值属性描述
valueString“”属性说明
nameString“”覆盖属性的名称
allowableValuesString“”参数允许值
accessString“”过滤属性
requiredbooleanfalse是否必填,默认false
dataTypeString“”参数的数据类型,可以使类名或原始数据类型
hiddenbooleanfalse是否隐藏
readOnlyString“”添加被指定为只读的功能
referenceString“”指定对应类型定义的引用,覆盖指定的任何其他元数据
allowEmptyValuebooleanfalse允许传空值
exampleString“”属性的示例值

注意:java和scala在@ApiModelProperty注解上的使用的区别

  1. *java实体类
  2. @Data
  3. @ApiModel(description = "测试请求类")
  4. public class TestReq {
  5. @ApiModelProperty(value = "用户ID",required = true)
  6. private Long userId;
  7. @ApiModelProperty(value = "用户名",example = "张三")
  8. }
  9. *scala实体类
  10. @Data
  11. @ApiModel(description = "测试响应类")
  12. public class TestRes {
  13. @(ApiModelProperty @field)("用户ID")
  14. private Long userId;
  15. @(ApiModelProperty @field)("用户名")
  16. }

用在方法、类上,对响应状态码列表进行描述。

属性名称属性类型属性默认值属性描述
valueApiResponse[]“”响应状态码列表的描述

用在方法上,对响应状态码进行描述。一般作为@ApiResponses的属性使用。

属性名称属性类型属性默认值属性描述
codeint“”响应的HTTP状态码
messageString“”响应的描述
responseClass<?>Void.class用于描述消息有效负载的可选响应类,对应于响应消息对象的 schema 字段
referenceString“”指定对响应类型的引用,指定的应用可以使本地引用,也可以是远程引用,将按原样使用,并将覆盖任何指定的response()类
responseHeadersResponseHeader[]@ResponseHeader(name = “”, response = Void.class)可能响应的header列表
responseContainerString“”声明响应的容器,有效值为List,Set,Map,任何其他值都将被忽略
  1. @GetMapping("test2")
  2. @ApiOperation(value = "test2接口",notes = "test2接口详细描述")
  3. @ApiResponses(value = {
  4. @ApiResponse(code = 200, message = "请求成功", responseHeaders = {@ResponseHeader(name = "header1", description = "header1的描述",response = String.class)}),
  5. @ApiResponse(code = 401, message = "没有权限"),
  6. @ApiResponse(code = 403, message = "禁止访问")
  7. })
  8. public ApiResult<TestRes> test2(@ApiParam(value = "aa的说明") @RequestParam String aa, @ApiParam(value = "bb的说明") @RequestParam String bb) {
  9. return ApiUtil.success(new TestRes());
  10. }