v4.5.0版本-2024/01/08
Knife4j 4.5.0版本发布,助力橙单低代码平台OpenAPI3.0规范顺利落地
本次迭代
4.5.0版本主要更新如下:
1、前端i18n增加对日语的支持,感谢一堃通行 ,Gitee#PR98
2、修复EnvironmentPostProcessor中存在defaultProperties与业务冲突的问题,感谢leilei,Gitee#PR100
3、修复addOrderExtension方法报错空指针问题,感谢doublek24Gitee#PR99
4、Spring Boot3 中排序order不生效的问题
5、OpenAPI3规范中未配置springdoc.group-configs.packages-to-scan
属性导致的空指针异常Gitee#I8O7E8
6、实体参数,@Schema
的description属性显示的异常问题Gitee#I8EVO3、Github#690
7、OpenAPI3规范请求类型针对format
属性的展示问题Gitee#I8KRWV
8、自定义文档】多服务聚合后如果服务名包含"-"会导致自定义文档页刷新报错Gitee#I8EKAQ
9、移除文档favicon.ico
的引用Github#716
橙单企业级插件支持
背景
橙单低代码平台作为Knife4j
组件的老朋友,对于Knife4j的推广,应用都提供了极大的帮助和反馈,此次针对橙单低代码平台针对Spring Boot3+OpenAPI3版本的兼容适配,Knife4j也是提供了很好的支撑。
在做企业级插件需求介绍前,先给大家介绍下橙单低代码平台
橙单低代码平台简介:
- 橙单代码生成工具,可导入多数据源和复杂的表关系,并生成开箱即用的前后端工程代码。
- 生成后工程代码全部采用主流技术栈搭建,完全遵循阿里巴巴编码规范。
- 较高的代码注释率,完整的开发部署手册和系列教程,可帮您快速上手完成后续的二次开发工作。
- VIP 服务和技术交流群,提供在线问题解答,并将您的合理反馈,及时更新到下一版本。
主要技术特点:
- 前后端技术栈可根据项目规模和客户偏好按需选择,生成后代码保持统一的接口定义规则。
- 前端模板支持基于 Fragment 和 Block 的灵活布局方式,通过配置即可生成多样化的表单页面。
- 高质量的前后端工程代码,产品级的代码细节打磨和性能优化,近乎于 0 的代码重复率。
- 前沿的单表组合式查询,为数据库减负,让您的系统在 PaaS 云平台运行时更具伸缩性。
- 创新式生成基于主表模式的规范化服务间调用接口,服务组合像搭积木一样轻巧自如。
- 提供高可配置性的用户权限管理模块,目前已支持按钮级操作权限和标签级显示权限。
- 菜单级数据过滤权限,多种过滤策略任意组合。Mybatis 拦截器 + JSqlParser 组合,让代码侵入性将至最低。
- 支持定时任务代码生成,如流水表及其关联表分组聚合计算后批量刷新到统计表。
- 通过基于qdox的代码分析结果,可以 0 注解生成高准确度的 Postman API 接口文档
官网地址:http://www.orangeforms.com/
需求支撑
在橙单低代码平台中,对于接口的请求请求,橙单做了一层自定义的注解,可以方便开发者以JSON方式提交数据,代码示例如下:
@Operation(summary = "测试一下-MyRequestBody")
@PostMapping(value = "/test/module/upload")
public ResponseEntity<MyBodyTest> test(@MyRequestBody FileRequestVo fileRequestVo, @MyRequestBody FileResp fileResp, HttpServletResponse response){
MyBodyTest myBodyTest=new MyBodyTest();
myBodyTest.setFileResp(fileResp);
myBodyTest.setRequestVo(fileRequestVo);
return ResponseEntity.ok(myBodyTest);
}
橙单提供了自定义注解@MyRequestBody
,对于请求参数,可以直接以JSON方式进行请求,而无需定义实体类,最终OpenAPI的接口效果展示如下图:
通过基于Knife4j个性化插件的支持+OpenAPI3规范的扩展,完成橙单企业级插件的兼容适配,方便橙单的用户能够在Spring Boot3+OpenAPI3规范的场景下,很好的使用Knife4j的接口文档展示。
解决方案
基于Springdoc-openapi项目提供的GlobalOperationCustomizer
钩子函数,提供对扩展属性的支持。
springdoc-openapi项目提供了两大核心扩展接口:
- 🏜️
GlobalOperationCustomizer
:针对Operation级别的全局自定义扩展钩子函数,开发者可以对接口中每一个Operation进行扩展自定义实现,或调整,或修改,或增加扩展都行,Knife4j的部分增强特性就是基于此函数实现,可以参考代码Knife4jJakartaOperationCustomizer.java - 🏝️
GlobalOpenApiCustomizer
:是针对整个OpenAPI级别的,开发者在分组或者分包后,得到的单个OpenAPI实例,开发者可以操纵全局的OpenAPI实例,该OpenAPI对象已经是springdoc解析过的实例对象,例如该issues中的需求,开发者只需要自定义创建新Operation对象,然后通过OpenAPI实例对象进行add添加即可完成此需求,部分扩展可以参考代码:Knife4jOpenApiCustomizer.java - 🎠 扩展实现类接口后,注入Spring的容器中即可
详情代码可参考:knife4j-orangeforms-boot3-openapi3
最后
本次4.5.0版本的发布,除了解决一些常规的issues问题,也是非常感谢橙单低代码平台的大力支持
大家如果有低代码平台的需求,可以考虑一下橙单低代码平台!!!
官网地址:http://www.orangeforms.com/
当然,如果对于Knife4j对于各个企业级插件的需求支持,也欢迎大家通过issues或者平台进行反馈!!!