|
Controller 相关注解 @Api: 可设置对控制器的描述。 表 1. @Api 主要属性
注解属性 |
类型 |
描述 |
tags |
String[] |
控制器标签。 |
description |
String |
控制器描述(该字段被申明为过期)。 |
接口相关注解
注解属性 |
类型 |
描述 |
value |
String |
接口说明。 |
notes |
String |
接口发布说明。 |
tags |
Stirng[] |
标签。 |
response |
Class<?> |
接口返回类型。 |
httpMethod |
String |
接口请求方式。 |
注解属性 |
描述 |
paramType |
查询参数类型,实际上就是参数放在那里。取值:
- path:以地址的形式提交数据,根据 id 查询用户的接口就是这种形式传参。
- query:Query string 的方式传参。
- header:以流的形式提交。
- form:以 Form 表单的形式提交。
|
dataType |
参数的数据类型。取值:
|
name |
参数名字。 |
value |
参数意义的描述。 |
required |
是否必填。取值:
|
Model 相关注解
注解属性 |
类型 |
描述 |
value |
String |
字段说明。 |
name |
String |
重写字段名称。 |
dataType |
Stirng |
重写字段类型。 |
required |
boolean |
是否必填。 |
example |
Stirng |
举例说明。 |
hidden |
boolean |
是否在文档中隐藏该字段。 |
allowEmptyValue |
boolean |
是否允许为空。 |
allowableValues |
String |
该字段允许的值,当我们 API 的某个参数为枚举类型时,使用这个属性就可以清楚地告诉 API 使用者该参数所能允许传入的值。 |
- @ApiModel: 可设置接口相关实体的描述。
- @ApiModelProperty: 可设置实体属性的相关描述。
表 4. @ApiModelProperty 主要属性
- @ApiIgnore: Swagger 文档不会显示拥有该注解的接口。
- @ApiImplicitParams: 用于描述接口的非对象参数集。
- @ApiImplicitParam: 用于描述接口的非对象参数,一般与 @ApiImplicitParams 组合使用。
表 3. @ApiImplicitParam 主要属性
- @ApiOperation: 可设置对接口的描述。
表 2. @ApiOperation 主要属性
|
|
1、swagger2 注解整体说明 用于controller类上:
用于方法上面(说明参数的含义):
注解 |
说明 |
@ApiOperation |
方法的说明 |
@ApiImplicitParams、@ApiImplicitParam |
方法的参数的说明;@ApiImplicitParams 用于指定单个参数的说明 |
用于方法上面(返回参数或对象的说明):
注解 |
说明 |
@ApiResponses、@ApiResponse |
方法返回值的说明 ;@ApiResponses 用于指定单个参数的说明 |
对象类:
注解 |
说明 |
@ApiModel |
用在JavaBean类上,说明JavaBean的 用途 |
@ApiModelProperty |
用在JavaBean类的属性上面,说明此属性的的含议 |
2、@Api:请求类的说明
@Api:放在 请求的类上,与 @Controller 并列,说明类的作用,如用户模块,订单类等。 tags="说明该类的作用" value="该参数没什么意义,所以不需要配置" |
示例:
@Api(tags="订单模块") @Controller public class OrderController { } |
@Api 其它属性配置:
属性名称 |
备注 |
value |
url的路径值 |
tags |
如果设置这个值、value的值会被覆盖 |
description |
对api资源的描述 |
basePath |
基本路径 |
position |
如果配置多个Api 想改变显示的顺序位置 |
produces |
如, “application/json, application/xml” |
consumes |
如, “application/json, application/xml” |
protocols |
协议类型,如: http, https, ws, wss. |
authorizations |
高级特性认证时配置 |
hidden |
配置为true ,将在文档中隐藏 |
3、@ApiOperation:方法的说明
@ApiOperation:"用在请求的方法上,说明方法的作用" value="说明方法的作用" notes="方法的备注说明" |
3.1、@ApiImplicitParams、@ApiImplicitParam:方法参数的说明
@ApiImplicitParams:用在请求的方法上,包含一组参数说明 @ApiImplicitParam:对单个参数的说明 name:参数名 value:参数的说明、描述 required:参数是否必须必填 paramType:参数放在哪个地方 · query --> 请求参数的获取:@RequestParam · header --> 请求参数的获取:@RequestHeader · path(用于restful接口)--> 请求参数的获取:@PathVariable · body(请求体)--> @RequestBody User user · form(普通表单提交) dataType:参数类型,默认String,其它值dataType="Integer" defaultValue:参数的默认值 |
示列:
@Api(tags="用户模块") @Controller public class UserController { @ApiOperation(value="用户登录",notes="随边说点啥") @ApiImplicitParams({ @ApiImplicitParam(name="mobile",value="手机号",required=true,paramType="form"), @ApiImplicitParam(name="password",value="密码",required=true,paramType="form"), @ApiImplicitParam(name="age",value="年龄",required=true,paramType="form",dataType="Integer") }) @PostMapping("/login") public JsonResult login(@RequestParam String mobile, @RequestParam String password, @RequestParam Integer age){ //... return JsonResult.ok(map); } |
4、@ApiResponses、@ApiResponse:方法返回值的状态码说明
@ApiResponses:方法返回对象的说明 @ApiResponse:每个参数的说明 code:数字,例如400 message:信息,例如"请求参数没填好" response:抛出异常的类 |
示例:
@Api(tags="用户模块") @Controller public class UserController { @ApiOperation("获取用户信息") @ApiImplicitParams({ @ApiImplicitParam(paramType="query", name="userId", dataType="String", required=true, value="用户Id") }) @ApiResponses({ @ApiResponse(code = 200, message = "请求成功"), @ApiResponse(code = 400, message = "请求参数没填好"), @ApiResponse(code = 404, message = "请求路径没有或页面跳转路径不对") }) @ResponseBody @RequestMapping("/list") public JsonResult list(@RequestParam String userId) { ... return JsonResult.ok().put("page", pageUtil); } } |
5、@ApiModel:用于JavaBean上面,表示对JavaBean 的功能描述 @ApiModel的用途有2个:
- 当请求数据描述,即 @RequestBody 时, 用于封装请求(包括数据的各种校验)数据;
- 当响应值是对象时,即 @ResponseBody 时,用于返回值对象的描述。
5.1、当请求数据描述时, @RequestBody 时的使用
@ApiModel(description = "用户登录") public class UserLoginVO implements Serializable { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "用户名",required=true) private String username; @ApiModelProperty(value = "密码",required=true) private String password; // getter/setter省略 } |
@Api(tags="用户模块") @Controller public class UserController { @ApiOperation(value = "用户登录", notes = "") @PostMapping(value = "/login") public R login(@RequestBody UserLoginVO userLoginVO) { User user=userSerivce.login(userLoginVO); return R.okData(user); } } |
5.2、@ApiModelProperty:用在JavaBean类的属性上面,说明属性的含义 示例:
@ApiModel(description= "返回响应数据") public class RestMessage implements Serializable{ @ApiModelProperty(value = "是否成功",required=true) private boolean success=true; @ApiModelProperty(value = "错误码") private Integer errCode; @ApiModelProperty(value = "提示信息") private String message; @ApiModelProperty(value = "数据") private Object data; /* getter/setter 略*/ } |
|