Springboot整合Knife4j接口文档

一、knife4j是什么

Knife4j是一个基于SpringBoot构建的文档生成工具,旨在为Java MVC框架集Swagger2 和 OpenAPI3为一体的增强解决方案。**

二、快速开始

1.Spring Boot 3版本

  • Spring Boot 3 只支持OpenAPI3规范
  • Knife4j提供的starter已经引用springdoc-openapi的jar,开发者需注意避免jar包冲突
  • JDK版本必须 >= 17
  • 详细Demo请参考knife4j-spring-boot3-demo

1.引入依赖

<dependency>
    <groupId>com.github.xiaoymin</groupId>
    <artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
    <version>4.4.0</version>
</dependency>

2.yml配置:

# springdoc-openapi项目配置
springdoc:
  swagger-ui:
    path: /swagger-ui.html
    tags-sorter: alpha
    operations-sorter: alpha
  api-docs:
    path: /v3/api-docs
  group-configs:
    - group: 'default'
      paths-to-match: '/**'
      packages-to-scan: com.xiaominfo.knife4j.demo.web
# knife4j的增强配置,不需要增强可以不配
knife4j:
  enable: true
  setting:
    language: zh_cn

3.示例代码

@RestController
@RequestMapping("body")
@Tag(name = "body参数")
public class BodyController {

   @Operation(summary = "普通body请求")
   @PostMapping("/body")
   public ResponseEntity<FileResp> body(@RequestBody FileResp fileResp){
       return ResponseEntity.ok(fileResp);
   }

   @Operation(summary = "普通body请求+Param+Header+Path")
   @Parameters({
           @Parameter(name = "id",description = "文件id",in = ParameterIn.PATH),
           @Parameter(name = "token",description = "请求token",required = true,in = ParameterIn.HEADER),
           @Parameter(name = "name",description = "文件名称",required = true,in=ParameterIn.QUERY)
   })
   @PostMapping("/bodyParamHeaderPath/{id}")
   public ResponseEntity<FileResp> bodyParamHeaderPath(@PathVariable("id") String id,@RequestHeader("token") String token, @RequestParam("name")String name,@RequestBody FileResp fileResp){
       fileResp.setName(fileResp.getName()+",receiveName:"+name+",token:"+token+",pathID:"+id);
       return ResponseEntity.ok(fileResp);
   }
}

最后,访问Knife4j的文档地址:http://ip:port/doc.html即可查看文档

2.Spring Boot 3版本

1.引入依赖

<dependency>
    <groupId>com.github.xiaoymin</groupId>
    <artifactId>knife4j-openapi2-spring-boot-starter</artifactId>
    <version>4.4.0</version>
</dependency>

2.yml配置

knife4j:
  enable: true
  openapi:
    title: Knife4j官方文档
    description: "`我是测试`,**你知道吗**
    # aaa"
    email: xiaoymin@foxmail.com
    concat: 八一菜刀
    url: https://docs.xiaominfo.com
    version: v4.0
    license: Apache 2.0
    license-url: https://stackoverflow.com/
    terms-of-service-url: https://stackoverflow.com/
    group:
      test1:
        group-name: 分组名称
        api-rule: package
        api-rule-resources:
          - com.knife4j.demo.new3

3.4. 注解使用

@Api(tags = “01.用户管理模块”)

@Api标注在Controller类上,在页面上接口文档页面上会分类替代Controller名称

@ApiOperation(value=“查询列表”)

@ApiOperation标注在Controller方法上,在接口文档页面会显示value内容替代方法名

@ApiModelProperty(value = “用户名”, required = true, example = “赵丽颖”)

@ApiModelProperty标注在入参的dto变量上,value会替代具体参数名称,required会显示是否必填项,example会给出默认值

@ApiImplicitParam(name = “id”, value = “微博”, required=true, dataType = “int”)

@ApiImplicitParam标注在Controller方法上,对未封装参数进行注释,value会替代具体参数名称,required会显示是否必填项,dataType 指定参数类型

@ApiIgnore

@ApiIgnore标注在Controller方法的入参上,被标注的参数表示忽略该参数,不会在接口文档中显示,例如HttpRequest参数不需要显示。

最后,访问Knife4j的文档地址:http://ip:port/doc.html即可查看文档

相关推荐

  1. Springboot整合Knife4j接口文档

    2024-06-08 23:00:02       8 阅读
  2. SpringBoot项目整合Knife4j接口文档

    2024-06-08 23:00:02       39 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-08 23:00:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-08 23:00:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-08 23:00:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-08 23:00:02       18 阅读

热门阅读

  1. 12、架构-流量治理之服务容错

    2024-06-08 23:00:02       7 阅读
  2. 在Android中使用 MQTT 服务实现消息通信

    2024-06-08 23:00:02       10 阅读
  3. CSS实现渐隐渐现效果

    2024-06-08 23:00:02       5 阅读
  4. 一文搞懂 reST 和 Markdown 语法

    2024-06-08 23:00:02       9 阅读
  5. 鸿蒙认证学什么?

    2024-06-08 23:00:02       11 阅读
  6. 力扣 41.缺少的第一个正整数

    2024-06-08 23:00:02       10 阅读
  7. Python爬虫实战:从入门到精通

    2024-06-08 23:00:02       8 阅读