使用 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 中配置 |
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于