Swagger2笔记


通过@Api注解来自定义Tag

@Aap(tags={"",""})

分组排序

swagger.ui-config.tags-sorter=alpha

swagger.ui-config.operations-sorter=alpha | method

参数排序 position

@ApiModelProperty(value = "用户编号", position = 1)

 

 

 

 

 

 

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

参数的数据类型。取值:

  • Long
  • String

name

参数名字。

value

参数意义的描述。

required

是否必填。取值:

  • true:必填参数。
  • false:非必填参数。

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类上:

 

注解

说明

@Api

对请求类的说明

 

用于方法上面(说明参数的含义):

 

注解

说明

@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个:

  1. 当请求数据描述,即 @RequestBody 时, 用于封装请求(包括数据的各种校验)数据;
  2. 当响应值是对象时,即 @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 略*/

}