Swagger2.X 注解

使用 Swagger2 时有几个常用注解需要掌握。

常用注解

作用范围 API 使用位置
协议集描述 @Api 用于 controller 类上
协议描述 @ApiOperation 用在 controller 的方法上
非对象参数集 @ApiImplicitParams 用在 controller 的方法上
非对象参数描述 @ApiImplicitParam 用在@ApiImplicitParams 的方法里边
对象参数描述 @ApiParam 用在@ApiImplicitParams 的方法里边,定义接收的参数形式
描述返回对象的意义 @ApiModel 用在返回对象类上
对象属性 @ApiModelProperty 用在参数对象的字段上
Response 集 @ApiResponses 用在 controller 的方法上
Response @ApiResponse 用在 @ApiResponses 里边
Response @ResponseHeader

1. @Api 标记

API 用在类上,说明该类的作用。可以标记一个 Controller 类做为 swagger 文档资源,使用方式:
与 Controller 注解并列使用。 属性配置:

属性名称 备注 是否弃用
value url 的路径值
tags 如果设置这个值、value 的值会被覆盖
description 对 API 资源的描述 @Deprecated
basePath 基本路径可以不配置 @Deprecated
position 如果配置多个 API 想改变显示的顺序位置 @Deprecated
produces For example, "application/json, application/xml"
consumes For example, "application/json, application/xml"
protocols Possible values: http, https, ws, wss.
authorizations 高级特性认证时配置

如:

@Api(tags = "product模块")
public class ProductController implements ProductFeign {
	
}

2. @ApiOperation 标记

ApiOperation:用在方法上,说明方法的作用,每一个 url 资源的定义,使用方式:

@ApiOperation(
          value = "Find purchase order by ID",
          notes = "",
          response = A.class,
          tags = {""})

与 Controller 中的方法并列使用。
属性配置:

属性名称 备注 是否弃用
value url 的路径值
tags 如果设置这个值、value 的值会被覆盖
description 对 API 资源的描述
basePath 基本路径可以不配置
position 如果配置多个 API 想改变显示的顺序位置 @Deprecated
produces For example, "application/json, application/xml"
consumes For example, "application/json, application/xml"
protocols Possible values: http, https, ws, wss.
authorizations 高级特性认证时配置
hidden 配置为 true 将在文档中隐藏
response 返回的对象
responseContainer 这些对象是有效的 "List", "Set" or "Map".,其他无效
responseReference 指定对响应类型的引用。指定的引用可以是本地的,也可以是远程的*将按原样使用,并覆盖任何指定的 response()类。
responseHeaders 响应旁边提供的可能标题列表。
httpMethod "GET", "HEAD", "POST", "PUT", "DELETE", "OPTIONS" and "PATCH"
code http 的状态码 默认 200
extensions 扩展属性
notes 注释说明
response 方法的返回值的类型 class

如:

@ApiOperation(value = "/createCode", notes = "创建文件", response = ResultObj.class)
@RequestMapping(value = "/createCode")
public ResultObj createCode(
        @RequestParam(value = "tab_name", required = true) String tab_name
        , @RequestParam(value = "type", required = true) Integer type
        , @RequestParam(value = "includeSwagger", required = true) Boolean includeSwagger
        , @RequestParam(value = "moduleName", required = true) String moduleName
        , @RequestParam(value = "packageName", required = true) String packageName) {
    return ResultObj.getDefaultResponse(appTableService.listTable(tab_name, null));
}

3. @ApiImplicitParams、@ApiImplicitParam、@ApiParam 标记

@ApiImplicitParams

只有 value 一个属性,用来装多个 @ApiImplicitParam

@ApiImplicitParam

用在 @ApiImplicitParams 注解中,指定一个请求参数的各个方面

属性名称 备注
paramType 参数放在哪个地方
name 参数名称
value 参数代表的含义
dataType 参数类型
dataTypeClass 参数类型
required 是否必要
defaultValue 参数的默认值
paramType:
header-->请求参数的获取@RequestHeader(代码中接收注解)    
query-->请求参数的获取@RequestParam(代码中接收注解)    
path用于restful接口-->请求参数的获取@PathVariable(代码中接收注解) 
body-->请求参数的获取@RequestBody(代码中接收注解)    
form不常用)

@ApiOperation(value = "/createCode", notes = "创建文件", response = ResultObj.class)
@ApiImplicitParams({
@ApiImplicitParam(name = "表名", value = "tab_name", paramType = "query", dataType = "String", required = true)
, @ApiImplicitParam(name = "生成代码类别参数", value = "type", paramType = "query", dataType = "Integer", required = true)
})
@RequestMapping(value = "/createCode")
    public ResultObj createCode(
        @RequestParam(value = "tab_name", required = true) String tabName
        , @RequestParam(value = "type", required = true, defaultValue = "-1") Integer type){return null;}

@ApiParam

用在接收参数中,指定一个请求参数的信息

属性名称 备注
name 要绑定到的请求参数的名称
value 参数的简单描述
required 是否必要
defaultValue 参数的默认值
@ApiParam 请求属性,使用方式:与 Controller 中的方法并列使用。

属性配置:

属性名称 备注
name 属性名称
value 属性值
defaultValue 默认属性值
allowableValues 可以不配置
required 是否属性必填
access 不过多描述
allowMultiple 默认为 false
hidden 隐藏该属性
example 举例子

 public ResponseEntity<Order> getOrderById(
      @ApiParam(value = "ID of pet that needs to be fetched", allowableValues = "range[1,5]", required = true)
      @PathVariable("orderId") String orderId)

4. @ApiModel、@ApiModelProperty

@ApiModel

描述一个 Model 的信息(这种一般用在 post 创建的时候,使用 @RequestBody 这样的场景,请求参数无法使用 @ApiImplicitParam 注解进行描述的时候;

属性名称 备注
value 名称
description 描述
parent 父类 (class)
discriminator 官方描述:支持模型继承和多态性。这是用作鉴别器的字段名。基于这个领域,可以断言需要使用哪种子类型。
subTypes 子类型 {(class)}
reference 官方描述:指定对相应类型定义的引用,覆盖指定的任何其他元数据

@ApiModelProperty

描述一个 model 的属性。

@Table(name = "app_table", schema = "", catalog = "")
@ApiModel(value = "物理表信息表", description = "当前数据库表信息")
public class AppTable implements Serializable {

    private static final long serialVersionUID = -1L;

    @Id
    @Column(name = "tab_name", unique = true)
    @ApiModelProperty(value = "表名主键")

5. @ApiResponses、@ApiResponse

@ApiResponses:响应集配置,使用方式:

 @ApiResponses({ @ApiResponse(code = 400, message = "Invalid Order") })

与 Controller 中的方法并列使用。 属性配置:

属性名称 备注
value 多个 ApiResponse 配置

如:

 @RequestMapping(value = "/order", method = POST)
  @ApiOperation(value = "Place an order for a pet", response = Order.class)
  @ApiResponses({ @ApiResponse(code = 400, message = "Invalid Order") })
  public ResponseEntity<String> placeOrder(
      @ApiParam(value = "order placed for purchasing the pet", required = true) Order order) {
    storeData.add(order);
    return ok("");
  }

@ApiResponse:响应配置,使用方式:

@ApiResponse(code = 400, message = "Invalid user supplied")

与 Controller 中的方法并列使用。 属性配置:

属性名称 备注
code http 的状态码
message 描述
response 默认响应类 Void
reference 参考 ApiOperation 中配置
responseHeaders 参考 ResponseHeader 属性配置说明
responseContainer 参考 ApiOperation 中配置

在 SpringMvc 中的配置如下:

 @RequestMapping(value = "/order", method = POST)
  @ApiOperation(value = "Place an order for a pet", response = Order.class)
  @ApiResponses({ @ApiResponse(code = 400, message = "Invalid Order") })
  public ResponseEntity<String> placeOrder(
      @ApiParam(value = "order placed for purchasing the pet", required = true) Order order) {
    storeData.add(order);
    return ok("");
  }

6. ResponseHeader

响应头设置,使用方法

@ResponseHeader(name="head1",description="response head conf")

与 Controller 中的方法并列使用。 属性配置:

属性名称 备注
name 响应头名称
description 头描述
response 默认响应类 Void
responseContainer 参考 ApiOperation 中配置
  • Swagger

    Swagger 是一款非常流行的 API 开发工具,它遵循 OpenAPI Specification(这是一种通用的、和编程语言无关的 API 描述规范)。Swagger 贯穿整个 API 生命周期,如 API 的设计、编写文档、测试和部署。

    18 引用 • 15 回帖 • 4 关注
  • 工具

    子曰:“工欲善其事,必先利其器。”

    157 引用 • 502 回帖
  • 代码
    315 引用 • 496 回帖 • 5 关注
回帖
请输入回帖内容...