knife4j 系列注解
时间: 2023-06-23 16:05:56 浏览: 54
knife4j 是一个基于 Swagger 实现的开源的 Java 接口文档生成工具。它提供了一系列注解,能够帮助开发者更方便地编写接口文档,包括:
1. @Api:用于描述整个 Controller 类的信息,包括标记接口的名称、版本、作者、描述等。
2. @ApiOperation:用于描述单个接口的信息,包括接口的名称、请求方式、参数、返回值、描述等。
3. @ApiImplicitParam:用于描述单个请求参数的信息,包括参数名称、参数类型、是否必填、描述等。
4. @ApiImplicitParams:用于描述多个请求参数的信息,可以包含多个 @ApiImplicitParam。
5. @ApiModel:用于描述数据模型的信息,包括模型的名称、描述、属性等。
6. @ApiModelProperty:用于描述数据模型的属性信息,包括属性名称、描述、数据类型、是否必填等。
通过使用这些注解,开发者可以非常方便地编写出清晰、详细的接口文档,提高开发效率和协作效率。
相关问题
knife4j 系列注解及属性 和使用
knife4j 提供的常用注解及属性如下:
1. @Api:用于标记 Controller 类,并提供一些描述信息。
- tags:接口分组标签,用于在页面上展示。
- value:接口描述。
- description:详细描述接口的用途。
- produces:接口返回的数据类型,多个值用逗号隔开。
- consumes:接口接收的数据类型,多个值用逗号隔开。
示例代码:
```
@Api(tags = "用户管理")
@RestController
@RequestMapping("/api/user")
public class UserController {
...
}
```
2. @ApiOperation:用于标记接口并提供一些描述信息。
- value:接口描述。
- notes:详细描述接口的用途。
- httpMethod:请求方法类型,GET/POST/PUT/DELETE。
- response:接口返回的数据类型。
- responseContainer:接口返回数据类型的容器。
示例代码:
```
@ApiOperation(value = "查询用户信息", notes = "根据用户ID查询用户信息")
@GetMapping("/{userId}")
public UserVO getUser(@PathVariable Long userId) {
...
}
```
3. @ApiImplicitParam:用于描述单个请求参数的信息。
- name:参数名。
- value:参数描述。
- required:是否必填,默认为 false。
- dataType:参数类型。
- paramType:参数传递方式,query、header、path、body、form 中的一种。
示例代码:
```
@ApiImplicitParam(name = "userId", value = "用户ID", required = true, dataType = "long", paramType = "path")
@GetMapping("/{userId}")
public UserVO getUser(@PathVariable Long userId) {
...
}
```
4. @ApiImplicitParams:用于描述多个请求参数的信息。
- value:一个 @ApiImplicitParam 数组。
示例代码:
```
@ApiImplicitParams({
@ApiImplicitParam(name = "username", value = "用户名", dataType = "string", paramType = "query"),
@ApiImplicitParam(name = "password", value = "密码", dataType = "string", paramType = "query")
})
@PostMapping("/login")
public ResultVO login(String username, String password) {
...
}
```
5. @ApiModel:用于描述数据模型的信息。
- value:模型名称。
- description:模型描述。
示例代码:
```
@ApiModel(value = "用户信息", description = "用户基本信息")
public class UserVO {
...
}
```
6. @ApiModelProperty:用于描述数据模型的属性信息。
- value:属性描述。
- required:是否必填,默认为 false。
- dataType:属性类型。
示例代码:
```
@ApiModel(value = "用户信息", description = "用户基本信息")
public class UserVO {
@ApiModelProperty(value = "用户ID", required = true, dataType = "long")
private Long userId;
@ApiModelProperty(value = "用户名", required = true, dataType = "string")
private String username;
...
}
```
使用示例:
1. 引入依赖:
```
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId>
<version>2.0.2</version>
</dependency>
```
2. 在 Controller 类和接口方法上添加注解。
3. 启动项目,访问 http://localhost:port/doc.html 即可查看接口文档。
knife4j 常用注解
Knife4j常用的注解包括:
1. @Api:用于对Controller类添加API文档的说明和描述。可以在类级别使用,表示该类是一个API资源。
2. @ApiOperation:用于对Controller中的方法添加API操作的说明和描述。可以在方法级别使用,表示该方法是一个API操作。
3. @ApiParam:用于对Controller中方法的参数添加API参数的说明和描述。可以在方法参数级别使用,表示该参数是一个API参数。
4. @ApiImplicitParam:和@ApiParam类似,用于对Controller中的方法参数添加API参数的说明和描述。可以在方法参数级别使用,表示该参数是一个API参数。
5. @ApiModel:用于对实体类添加API模型的说明和描述。可以在类级别使用,表示该类是一个API模型。
6. @ApiModelProperty:用于对实体类的属性添加API属性的说明和描述。可以在属性级别使用,表示该属性是一个API属性。
例如,在使用Knife4j时,可以使用@Api注解来标注Controller类,使用@ApiOperation注解来标注Controller中的方法,使用@ApiParam注解来标注方法参数,使用@ApiModel注解来标注实体类,使用@ApiModelProperty注解来标注实体类的属性。这样可以为API文档添加详细的说明和描述,提高接口文档的可读性和可理解性。<span class="em">1</span><span class="em">2</span>
#### 引用[.reference_title]
- *1* [Knife4j注解说明](https://blog.csdn.net/qq_46126559/article/details/118487809)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *2* [swagger2(knife4j) 注解说明](https://blog.csdn.net/leaf__yang/article/details/126279902)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]