当前位置: 首页 > news >正文

若依框架 (Spring Boot 3) 集成 knife4j 实现 OpenAPI 文档增强

由于官方集成 knife4j 实现 OpenAPI 文档增强的文档说明比较模糊精简,CSDN优质内容又需要付费,本文提供免费配置的一套方法。

若依框架(Spring Boot 3版本)通过集成knife4j可以实现更强大的API文档功能,本文将详细介绍完整的集成步骤和最佳实践。

一、什么是knife4j?

knife4j是基于OpenAPI 3.0规范的API文档生成工具,是Swagger的增强实现,提供了更友好的UI界面和更丰富的功能,特别适合国内开发者使用。它支持接口调试、文档导出、全局参数配置等实用功能。

二、集成步骤

1. 添加依赖

在ruoyi-admin模块的pom.xml中添加knife4j依赖:

<!-- ruoyi-springboot3 / springdoc knife4j 配置 -->
<dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId><version>4.4.0</version>
</dependency>

该依赖已包含OpenAPI 3.0的核心功能,无需额外引入springdoc基础包。

2. 配置安全框架

修改安全配置类,允许访问knife4j的静态资源和文档页面,在\ruoyi-framework\src\main\java\com\mc\framework\config\SecurityConfig.java的安全规则中添加:

.requestMatchers("/webjars/**", "/doc.html", "/v3/api-docs/**", "/swagger-resources/**").permitAll()

这确保了在启用Spring Security的情况下,仍然可以正常访问API文档。

3. 配置knife4j

在application.yml中添加knife4j的配置:

# knife4j 配置
knife4j:enable: true           # 是否启用 knife4j 页面production: false      # 生产模式设置,true会关闭调试功能basic:enable: false        # 是否启用基础认证(可选)username: ruoyi      # 基础认证用户名password: 123456     # 基础认证密码setting:swagger-model-name: 心理健康系统实体类  # 模型名称language: zh-CN      # 界面语言设置为中文

4. 配置SpringDoc

在application.yml中添加SpringDoc配置,定制API文档生成规则:

# Springdoc配置
springdoc:api-docs:path: /v3/api-docs   # API文档JSON数据访问路径swagger-ui:enabled: true        # 是否启用Swagger UIpath: /swagger-ui.html  # Swagger UI访问路径tags-sorter: alpha   # 标签排序方式group-configs:- group: 'default'   # 接口分组名称display-name: '测试模块'  # 分组显示名称paths-to-match: '/**'    # 匹配的接口路径packages-to-scan: com.mc.web.controller.tool  # 需要扫描的控制器包路径

5. 在业务模块中使用

在业务模块的pom.xml中添加Swagger注解依赖:

<dependency><groupId>io.swagger.core.v3</groupId><artifactId>swagger-annotations-jakarta</artifactId><version>2.2.30</version>
</dependency>

三、注解使用详解

OpenAPI 3.0规范使用了全新的注解体系,与之前的Swagger 2.x有较大区别,下面是主要注解的使用示例:

1. 控制器注解示例

import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Parameters;
import io.swagger.v3.oas.annotations.enums.ParameterIn;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.responses.ApiResponses;
import io.swagger.v3.oas.annotations.tags.Tag;@RestController
@RequestMapping("/tool/demo")
@Tag(name = "测试接口", description = "测试接口相关操作")
public class DemoController {@Operation(summary = "获取列表", description = "获取测试数据列表")@GetMapping("/list")public TableDataInfo list(Demo demo) {startPage();List<Demo> list = demoService.selectDemoList(demo);return getDataTable(list);}@Operation(summary = "获取详情", description = "根据ID获取测试数据详情")@ApiResponses(value = {@ApiResponse(responseCode = "200", description = "查询成功"),@ApiResponse(responseCode = "404", description = "数据不存在")})@GetMapping(value = "/{id}")public AjaxResult getInfo(@Parameter(name = "id", description = "数据ID", required = true, in = ParameterIn.PATH)@PathVariable("id") Long id) {return success(demoService.selectDemoById(id));}@Operation(summary = "新增数据", description = "新增测试数据")@PostMappingpublic AjaxResult add(@Parameter(description = "测试数据信息", required = true)@Validated @RequestBody Demo demo) {return toAjax(demoService.insertDemo(demo));}
}

2. 实体类注解示例

import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.Max;
import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.NotBlank;@Data
@Schema(description = "测试实体类")
public class Demo {private static final long serialVersionUID = 1L;@Schema(value = "主键ID", example = "1")private Long id;@Schema(value = "名称", required = true, example = "测试名称")@NotBlank(message = "名称不能为空")private String name;@Schema(value = "年龄", example = "20", minimum = "0", maximum = "150")@Min(value = 0, message = "年龄不能小于0")@Max(value = 150, message = "年龄不能大于150")private Integer age;@Schema(value = "创建时间")private Date createTime;
}

四、注解版本说明

Swagger 2.x 注解OpenAPI 3.x 注解说明
@Api@Tag描述控制器
@ApiOperation@Operation描述接口方法
@ApiParam@Parameter描述参数
@ApiModel@Schema描述实体类
@ApiModelProperty@Schema描述实体类字段
@ApiResponses@ApiResponses描述接口响应

在Spring Boot 3项目中,推荐使用OpenAPI 3.x注解,因为:

  1. 更好地支持Jakarta EE规范
  2. 功能更丰富,配置更灵活
  3. 与knife4j-openapi3-jakarta依赖更匹配

五、访问文档

启动项目后,可以通过以下地址访问API文档:

  • Knife4j增强UI:http://localhost:8080/doc.html
  • 原生Swagger UI:http://localhost:8080/swagger-ui.html
  • API数据JSON:http://localhost:8080/v3/api-docs

六、knife4j增强功能

集成knife4j后,相比原生Swagger可以获得以下增强功能:

  • 更美观的中文界面,符合国内使用习惯
  • 支持接口调试历史记录
  • 文档导出功能(支持Markdown、HTML、Word等格式)
  • 全局参数配置(如Token等公共参数)
  • 接口排序与分组管理
  • 离线文档功能
  • 接口权限控制

总结

通过本文的步骤,若依框架(Spring Boot 3版本)中快速集成knife4j,获得强大的API文档功能。合理使用OpenAPI 3.x注解可以使文档更加清晰、专业,显著提升前后端协作效率。

http://www.dtcms.com/a/399307.html

相关文章:

  • MySQL分库分表详解:从原理、策略到ShardingSphere中间件选型,避坑指南一篇就够了
  • Excel知识体系
  • 零基础网站建设入门到精通视频教《妻子》在线观看免费韩剧
  • AI 大模型驱动的开源知识库搭建系统 PandaWiki的网页挂件机器人教程
  • 甘露园网站建设wordpress文章页面区别
  • 网上做视频赚钱的网站有哪些企查查企业信息
  • 网站生成静态页面工具wordpress menu icons
  • [css] flex 布局设置文字不自动换行
  • Suno V5首发 – V5模型重磅来袭 —— AI 音乐创作进入全新纪元
  • 构建AI智能体:四十二、使用 Qwen-Agent Assistant 调用高德 API 实现天气查询
  • 网站用的服务器网站怎么维护更新
  • Metal - 2. 3D 模型深度解析
  • 做非经营网站需要营业执照莱芜在线沙总
  • 网站建设模板研究玉林市网站开发公司电话
  • 无线数传模块优化挖掘机工厂机械设备的远程监控通讯
  • 【最终章】-串口收发指令处理器-Verilog语法学习EP12
  • 嵌入模型与向量数据库
  • 白山商城网站建设昆明网站建设猫咪
  • git的在工作中使用的一些注意事项
  • 河北网站备案多久wordpress站点管理
  • 力扣300.最长递增子序列(经典dp)力扣375.猜数字II力扣.329矩阵最长的递增子序列力扣.33搜索旋转排序数组
  • Kasaraju 算法详解:强连通分量(SCC)检测与循环依赖分析
  • python+springboot+vue的食物营养分析与推荐网站
  • 网站前端开发工具有哪些?常用网站前端开发工具推荐、网站前端开发工具对比与最佳实践分享
  • SMBJ 简单使用指南 实现在 Java/Android 程序中访问 SMB 服务器
  • 做网站市场价关键词首页排名优化价格
  • 给菠菜网站做外包网站主持人制作方法
  • C#性能优化实战:多线程与异步编程技巧详解
  • 网站开发 报价单 表格免费网络电视直播
  • 软件测试自动化率和自动化误报率