Skip to content

产品介绍

knife4j-nextxiaoymin/knife4j 的社区维护 fork,延续 doc.html 的接入习惯与 starter 模块结构,在 upstream 发布节奏放缓时接续安全修复、兼容性修复和发布流程。

与 upstream 的关系

维度upstream knife4jknife4j-next(本项目)
Maven groupIdcom.github.xiaoymincom.baizhukui
artifactId保留完全一致,可直接替换
Java 包名com.github.xiaoymin.knife4j.*同上(未重命名,降低迁移成本)
knife4j.* 配置键保留完全兼容
访问入口(doc.html / v2 / v3 api-docs)保留完全一致
仓库xiaoymin/knife4jsongxychn/knife4j-next
发布渠道Maven CentralMaven Central
当前版本4.5.0(最后一个 Maven Central 发布版本)5.0.8
文档站doc.xiaominfo.com本站(knife4jnext.com

迁移的最小单位是改 groupId,业务代码、配置键、访问路径都不必动。 详见 迁移指引

这份 fork 想解决什么

  1. 兼容性修复。upstream 对 Spring Boot 3.4 / 3.5 的适配步伐变慢,fork 已经升级 springdoc-openapi-jakarta2.8.9,并通过 smoke-tests 覆盖 Boot 2.7.18 的 OAS2/OAS3、Boot 3.4.x/3.5.0 Jakarta 与 Boot 4.0.6 Jakarta 组合。
  2. 安全修复。修复了 /v2/api-docs;xxx 分号绕过 Basic 认证的漏洞(#886),以及 gateway context-path 下聚合 host 少斜杠的问题(#954)。
  3. 可重复发布流程.github/workflows/release.yml 通过 Central Publishing Plugin 直接推送 Maven Central,不依赖人工临场操作。
  4. 可试用的 Demoknife4j-demo-openapi3(Spring Boot 3.4 + OpenAPI 3 + React UI)和 knife4j-demo-openapi2(Spring Boot 2.7 + OpenAPI 2 + Vue 3 UI)两个示例工程都附带 Dockerfile,可分别本地运行或在线预览。

哪些是 已经 做了的

下表仅列 master 已合并 的工作,不是路线图承诺。

方向已合并对应资料
Boot 2.7.18 starter + UI webjar快速开始
Boot 3.4.0 / 3.5.0 兼容smoke-tests 模块 boot3-jakarta-appboot35-jakarta-app
Boot 4.0.6 WebMVC startersmoke-tests 模块 boot4-jakarta-app
Boot 4.0.6 Gateway startersmoke-tests 模块 boot4-gateway-app
/doc.html 分号绕过修复#886发布说明
Gateway context-path 修复#954Gateway 接入
React + Vite 新前端 webjarknife4j-openapi3-ui 生效;knife4j-openapi2-ui 交由本仓库 knife4j-vue3 维护
设置面板(Authorize / GlobalParam / OfflineDoc)新前端右上角入口
knife4j-demo-openapi3 / knife4j-demo-openapi2 Docker 镜像Demo 预览
com.baizhukui 坐标发布Maven Central

哪些是 没有 做或 部分实现,需要你知道

upstream 文档里列出的增强特性在本 fork 的实际实现状态,前端和后端存在差异:

情况示例建议
服务端能力已覆盖knife4j.enableknife4j.productionknife4j.basic、JSR303 透传安心使用
Springfox 专属增强在 OAS3 中不处理@DynamicParameters@DynamicResponseParameters@ApiOperationSupport(ignoreParameters/includeParameters)迁到 OpenAPI3 时改用实体类或标准 OpenAPI 注解替代
后端实现,新 React 前端已读取部分默认值knife4j.setting.languageenable-debugenable-searchenable-open-apienable-hostenable-groupenable-footerenable-footer-customfooter-custom-contentenable-request-cacheenable-home-customhome-custom-locationswagger-model-name这些是 UI 开关,不替代后端安全控制;本地设置面板选择优先
React UI 已补齐或重做OAuth2 四种 flow 基础鉴权、HTML/Word/Markdown/OpenAPI JSON 离线导出、tags-sorter / operations-sorterx-openapi.x-markdownFiles 自定义文档、自定义 Footer、自定义首页、基础 JS/TS 代码片段优先以本仓库文档和实际 demo 为准
仍未覆盖Postman 导出、afterScript、版本小蓝点等等待后续迭代;重度依赖这些能力时暂时使用 openapi2 starter + 本仓库 Vue 3 UI

完整对应关系见 路线图 / 新前端覆盖范围

两个前端、两个 UI webjar

这一点最容易混淆,先说清

UI webjar打包的前端对应 starter
knife4j-openapi2-ui本仓库 knife4j-vue3 构建产物(兼容维护,功能较完整)knife4j-openapi2-spring-boot-starterknife4j-aggregation-spring-boot-starter
knife4j-openapi3-uiReact 新前端(从 Preview 起集成,为主线)knife4j-openapi3-spring-boot-starterknife4j-openapi3-jakarta-spring-boot-starterknife4j-openapi3-boot4-spring-boot-starterknife4j-aggregation-jakarta-spring-boot-starterknife4j-gateway-spring-boot-starterknife4j-gateway-boot4-spring-boot-starter

所以:

  • Springfox + OpenAPI2openapi2-starter,UI 是本仓库 knife4j-vue3 的构建产物(兼容维护),继续提供 upstream 已有功能。
  • springdoc-openapi + OpenAPI3openapi3-starteropenapi3-jakarta-starter 或 Boot4 专用 starter,UI 是 新 React 版本(覆盖见上表),不熟悉行为请同时参考 FAQ

维护节奏

knife4j-next 从 5.0.0 起采用独立 SemVer 版本号,与上游 knife4j 版本号无关:

  • Patch5.0.15.0.25.0.35.0.45.0.55.0.65.0.75.0.8):安全修复、Bug 修复。
  • Minor5.1.05.2.0):前端体验改动、新功能(向后兼容)。
  • Major6.0.0):破坏性变更。

下一步推荐路径

让 OpenAPI 文档更清晰,让接口联调更顺手。