Swagger是一个广泛使用的API文档工具,它可以根据代码自动生成API文档,并提供交互式的API测试界面。在Swagger中,注解不仅仅只是用来生成文档,还能够控制API的行为,比如控制参数的校验、控制返回数据的格式、控制API的访问权限等。在本文中,我们将介绍Swagger常用的注解以及它们的使用方法。
一、@Api
@Api注解用来标识一个API的基本信息,包括API的名称、描述、作者等。这些信息将会出现在生成的文档中。@Api注解可以在Controller类上或者方法上使用。
@Api(value = "UserController", tags = {"用户管理"}) @RestController @RequestMapping("/users") public class UserController { @ApiOperation(value = "创建用户", notes = "根据User对象创建用户") @PostMapping("/add") public Result addUser(@RequestBody User user) { //... } }
在上面的示例中,@Api注解用来标识UserController类是一个用来管理用户的Controller,其中"用户管理"是这个API的标签。这个标签会出现在生成的文档中,方便用户查找。
二、@ApiOperation
@ApiOperation注解用来描述一个API的具体操作,包括API的名称、请求方式、请求路径、请求参数、返回结果等。@ApiOperation注解只能在Controller的方法上使用。
@ApiOperation(value = "创建用户", notes = "根据User对象创建用户") @PostMapping("/add") public Result addUser(@Valid @RequestBody User user) { //... }
在上面的示例中,@ApiOperation注解用来描述addUser方法的功能是创建一个用户。其中,value属性是API的名称,notes属性是API的详细描述。@PostMapping注解用来控制请求的HTTP方法,"/add"是请求路径。
三、@ApiParam
@ApiParam注解用来描述一个API的请求参数,包括参数名称、类型、描述、是否必填等。@ApiParam注解只能在Controller的方法的参数上使用。
@ApiOperation(value = "创建用户", notes = "根据User对象创建用户") @PostMapping("/add") public Result addUser(@ApiParam(name = "user", value = "用户实体", required = true) @Valid @RequestBody User user) { //... }
在上面的示例中,@ApiParam注解用来描述请求参数user的具体信息。其中,name属性是参数的名称,value属性是参数的描述,required属性表示该参数是否必填。
四、@ApiResponses
@ApiResponses注解用来描述一个API的可能的返回结果,包括返回状态码、描述信息等。@ApiResponses注解只能在Controller的方法上使用。
@ApiOperation("查询用户") @ApiResponses(value = { @ApiResponse(code = 200, message = "请求成功"), @ApiResponse(code = 401, message = "未授权"), @ApiResponse(code = 403, message = "禁止访问"), @ApiResponse(code = 404, message = "请求路径不存在"), @ApiResponse(code = 500, message = "服务器内部错误") }) @GetMapping("/{id}") public Result getUserById(@ApiParam(value = "用户ID", required = true) @PathVariable Long id) { //... }
在上面的示例中,@ApiResponses注解用来描述getUserById方法可能的返回结果。其中,@ApiResponse注解用来描述一个具体的返回结果,包括返回状态码和描述信息。
五、@ApiModelProperty
@ApiModelProperty注解用来描述一个API的返回结果,包括返回对象的名称、类型、描述等。@ApiModelProperty注解只能在DTO类的属性上使用。
@Data public class UserDTO { @ApiModelProperty(value = "用户ID", example = "1") private Long id; @ApiModelProperty(value = "用户名", example = "Tom") private String username; @ApiModelProperty(value = "手机号码", example = "13800138000") private String mobile; }
在上面的示例中,@ApiModelProperty注解用来描述UserDTO类中属性的具体信息。其中,value属性是属性的描述,example属性是属性的样例,方便用户理解。
六、小结
Swagger是一个非常实用的API文档工具,在大型项目中大大简化了API文档的维护和管理。在使用Swagger时,合理使用注解能够帮助我们更好地控制API的行为,生成清晰易懂的API文档。