官方文档:https://doc.xiaominfo.com/
Knife4j是一个基于Swagger的API文档生成工具,它提供了一种方便的方式来为Spring Boot项目生成在线API文档。Knife4j的特点包括:
总之,Knife4j是一个方便、灵活且功能丰富的API文档生成工具,可以帮助开发团队快速生成和维护API文档。
com.github.xiaoymin knife4j-openapi2-spring-boot-starter 4.0.0
第一种方式:Java 配置类
@Configuration @EnableSwagger2WebMvc public class Knife4jConfiguration { private ApiInfo commonApiInfo() { return new ApiInfoBuilder() .title("knife4j 接口文档测试") .description("Knife4j是一款基于Swagger的API文档在线编辑工具,它为Java开发人员提供了一种简单而强大的方式来创建、编辑和管理API文档。Knife4j可以帮助开发人员快速生成和展示API文档,提供了友好的界面和丰富的功能,包括接口测试、在线调试、文档管理等。它还支持对Swagger注解的解析,能够自动生成API文档,并提供了一些扩展功能,如接口权限设置、数据模型展示等。Knife4j可以帮助开发团队更好地管理和维护API文档,提高开发效率和协作能力。") .contact("hwike@foxmail.com") .version("1.0") .build(); } @Bean(value = "dockerBeanAdmin") public Docket dockerBeanAdmin() { //指定使用Swagger2规范 Docket docket=new Docket(DocumentationType.SWAGGER_2) .apiInfo(commonApiInfo()) //分组名称 .groupName("后台接口分组") .select() //这里指定Controller扫描包路径 .apis(RequestHandlerSelectors.basePackage("com.itwenke.springbootdemo.knife4j.admin")) .paths(PathSelectors.any()) .build(); return docket; } @Bean(value = "dockerBeanFront") public Docket dockerBeanFront() { //指定使用Swagger2规范 Docket docket=new Docket(DocumentationType.SWAGGER_2) .apiInfo(commonApiInfo()) //分组名称 .groupName("前台接口分组") .select() //这里指定Controller扫描包路径 .apis(RequestHandlerSelectors.basePackage("com.itwenke.springbootdemo.knife4j.front")) .paths(PathSelectors.any()) .build(); return docket; } }
另一种方式:application.yml 配置
# knife4j knife4j: # 是否开启 enable: true setting: language: zh-CN openapi: title: knife4j 接口文档测试 description: Knife4j是一款基于Swagger的API文档在线编辑工具,它为Java开发人员提供了一种简单而强大的方式来创建、编辑和管理API文档。Knife4j可以帮助开发人员快速生成和展示API文档,提供了友好的界面和丰富的功能,包括接口测试、在线调试、文档管理等。它还支持对Swagger注解的解析,能够自动生成API文档,并提供了一些扩展功能,如接口权限设置、数据模型展示等。Knife4j可以帮助开发团队更好地管理和维护API文档,提高开发效率和协作能力。 concat: hwike@foxmail.com version: 1.0.0 group: admin: group-name: 后台接口分组 api-rule: package api-rule-resources: - com.itwenke.springbootdemo.knife4j.admin front: group-name: 前台接口分组 api-rule: package api-rule-resources: - com.itwenke.springbootdemo.knife4j.front
配置属性:
项目运行效果:
http://localhost:8080/doc.html
@Api(value = "测试控制器", tags = "测试API") @RestController @RequestMapping(path = {"api/test"}) public class TestController { @ApiOperation("打招呼") @GetMapping(path = "/hi") public String hi(@ApiParam(value = "姓名", required = true) @RequestParam String name) { return "hi " + name; } }
@Api注解用于描述一个API接口的基本信息,包括接口的名称、描述、标签等。它可以用在Controller类上,表示对整个Controller的描述,也可以用在方法上,表示对单个方法的描述。
@ApiOperation注解用于描述一个API接口的操作,包括接口的名称、描述、响应信息等。它通常用在Controller的方法上,表示对该方法的描述。
@RequestParam注解用于将请求参数绑定到方法的参数上,指定请求参数的名称、是否必须、默认值等信息。它通常用在Controller的方法参数上,表示该参数是从请求中获取的参数。
效果展示:
@ApiOperation("查询用户") @GetMapping(path = "/query") public UserInfoRespDTO query(UserInfoReqDTO reqDTO) { UserInfoRespDTO respDTO = new UserInfoRespDTO(); respDTO.setUserId(1L); respDTO.setUserName(reqDTO.getUserName()); respDTO.setRole("admin"); return respDTO; }
效果展示:
# knife4j knife4j: # 是否开启 enable: true # 权限认证 basic: enable: true username: admin password: 123456
再次打开http://localhost:8080/doc.html,需要输入用户密码
# knife4j knife4j: production: true
再次打开http://localhost:8080/doc.html,就不能访问了