本文已参与「新人创作礼」活动,一起开启掘金创作之路。
Knife4j快速入门
1.简介
knife4j是为Java MVC框架集成Swagger生成Api文档的增强解决方案。
特点:简洁、个性化配置、相较于swagger功能增强
官网网站:Knife4j
官方文档:Document
2.快速使用
- 添加依赖
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId>
<version>3.0.3</version>
</dependency>
- 添加
Knife4j是的配置类
@Configuration
@EnableSwagger2
@EnableKnife4j
public class Knife4jConfiguration {
@Bean
public Docket docket() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("包路径 一般为controller包"))
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("文档标题")
.description("文档描述")
.termsOfServiceUrl("服务条款地址")
.version("文档版本")
.license("开源版本号")
.licenseUrl("开源地址")
.contact(new Contact("作者名", "作者网址", "作者邮箱"))
.build();
}
}
- 启动程序即可
3.参数说明
@Api():修饰整个类,用在Controller之上
@RestController
@RequestMapping("user")
@Api(tags = "用户接口")
public class UserController {
}
@ApiModel():实体类说明
@ApiModelProperty():实体类属性说明
@Data
@Accessors(chain = true)
@ApiModel(value = "用户实体")
public class User implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("用户名")
private String name;
@ApiModelProperty("密码")
private String password;
@ApiModelProperty("年龄")
private int age;
@ApiModelProperty("描述")
private String desc;
}
注解说明:
@ApiOperation(value = "方法名字", notes = "功能具体描述")
@ApiImplicitParam:一个请求参数
@ApiImplicitParams:多个请求参数
参数说明:
paramType="body" 代表参数应该放在请求的什么地方:
header-->放在请求头。请求参数的获取:@RequestHeader(代码中接收注解) query -->用于get请求的参数拼接。请求参数的获取:@RequestParam(代码中接收注解) path -->(用于restful接口)-->请求参数的获取:@PathVariable(代码中接收注解) body -->放在请求体。请求参数的获取:@RequestBody(代码中接收注解) form -->(不常用)dataType="String" 代表请求参数类型:
Map String User 等等...allowMultiple=true:表示是数组格式的参数
required = true:表示参数是否必须
@RestController
@RequestMapping("user")
@Api(tags = "用户接口")
public class UserController {
@GetMapping("test1/{value}")
@ApiOperation(value = "方法名字", notes = "功能具体描述")
@ApiImplicitParam(name = "参数名字", value = "参数描述", paramType = "path", dataType = "int", allowMultiple = true, required = true)
public String test1(@PathVariable("value") int value) {
return "测试Knife4j:" + value;
}
@PostMapping("test2")
@ApiOperation(value = "测试实体参数", notes = "功能具体描述")
public String test2(@RequestBody User user) {
return "测试Knife4j:" + user;
}
}