跳到主要内容

Knife4j是一个集Swagger2 和 OpenAPI3
为一体的增强解决方案

Knife4j是一个集Swagger2OpenAPI3
为一体的增强解决方案

帮助开发者快速聚合使用OpenAPI规范.

基础特性

  • 兼容OpenAPI 2.0
  • 兼容OpenAPI 3.0

增强扩展

  • 基础ui组件(自定义文档、动态参数调试、I18n、接口排序、导出等)
  • 基于Springfox框架+Swagger2规范的自动注入starter
  • 基于Springdoc-openapi+OAS3规范的自动注入starter
  • 提供对主流网关组件的统一聚合OpenAPI接口文档的解决方案

框架适配

  • 适配兼容Spring MVC
  • 适配兼容Spring Boot 2.2、2.3、2.4、2.5、2.6、2.7、3.0
  • 适配兼容Spring WebFlux
  • 基于SpringFox2.x版本提供Swagger2规范的增强扩展
  • 基于Springdoc-openapi项目提供OAS3规范的增强扩展

社区生态

  • 基于Servlet体系的微服务聚合中间件Knife4jAggregation
  • 基于Spring Cloud Gateway网关聚合的微服务聚合中间件
  • 独立运行的中间件Knife4jDesktop

云原生

  • 提供基于K8S+Docker的云原生的聚合OpenAPI文档的解决方案
  • 简化Knife4j的使用及学习成本,一键部署&集成&使用
Image

正在使用 Knife4j 的企业 / 机构

(如果您的企业也使用了 Knife4j,您可以 在此提交)
Image
Image
Image
Image
Image
Image

Contributors

Knife4j的发展离不开每一位Contributor的无私奉献~~!
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image

快速开始(Spring Boot 2 + OpenAPI2)

不同规范以及Spring Boot3 OpenAPI3的使用请移步详细文档

第一步:创建Spring Boot项目并且在pom.xml中引入Knife4j的依赖包,代码如下:

<!--引入Knife4j的官方start包,该指南选择Spring Boot版本<3.0,开发者需要注意-->
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-openapi2-spring-boot-starter</artifactId>
<version>4.4.0</version>
</dependency>

第二步:创建Swagger配置依赖,代码如下::

@Configuration
@EnableSwagger2WebMvc
public class Knife4jConfiguration {

@Bean(value = "dockerBean")
public Docket dockerBean() {
//指定使用Swagger2规范
Docket docket=new Docket(DocumentationType.SWAGGER_2)
.apiInfo(new ApiInfoBuilder()
//描述字段支持Markdown语法
.description("# Knife4j RESTful APIs")
.termsOfServiceUrl("https://doc.xiaominfo.com/")
.contact("xiaoymin@foxmail.com")
.version("1.0")
.build())
//分组名称
.groupName("用户服务")
.select()
//这里指定Controller扫描包路径
.apis(RequestHandlerSelectors.basePackage("com.github.xiaoymin.knife4j.controller"))
.paths(PathSelectors.any())
.build();
return docket;
}
}

第三步:新建一个接口Controller类,如下:

@Api(tags = "首页模块")
@RestController
public class IndexController {

@ApiImplicitParam(name = "name",value = "姓名",required = true)
@ApiOperation(value = "向客人问好")
@GetMapping("/sayHi")
public ResponseEntity<String> sayHi(@RequestParam(value = "name")String name){
return ResponseEntity.ok("Hi:"+name);
}
}

万事俱备,启动Spring Boot项目,浏览器访问Knife4j的文档地址即可查看效果

http://localhost:8080/doc.html