-
Notifications
You must be signed in to change notification settings - Fork 626
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
3 changed files
with
99 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,98 @@ | ||
# v4.5.0版本-2024/01/08 | ||
|
||
Knife4j 4.5.0版本发布,助力橙单低代码平台OpenAPI3.0规范顺利落地 | ||
|
||
## 本次迭代 | ||
|
||
4.5.0版本主要更新如下: | ||
|
||
1、前端i18n增加对日语的支持,感谢[一堃通行](https://gitee.com/mao-junkun) ,[Gitee#PR98](https://gitee.com/xiaoym/knife4j/pulls/98) | ||
|
||
2、修复EnvironmentPostProcessor中存在defaultProperties与业务冲突的问题,感谢leilei,[Gitee#PR100](https://gitee.com/xiaoym/knife4j/pulls/100) | ||
|
||
3、修复addOrderExtension方法报错空指针问题,感谢doublek24[Gitee#PR99](https://gitee.com/xiaoym/knife4j/pulls/99) | ||
|
||
4、Spring Boot3 中排序order不生效的问题 | ||
|
||
5、OpenAPI3规范中未配置`springdoc.group-configs.packages-to-scan`属性导致的空指针异常[Gitee#I8O7E8](https://gitee.com/xiaoym/knife4j/issues/I8O7E8) | ||
|
||
6、实体参数,`@Schema`的description属性显示的异常问题[Gitee#I8EVO3](https://gitee.com/xiaoym/knife4j/issues/I8EVO3)、[Github#690](https://github.com/xiaoymin/knife4j/issues/690) | ||
|
||
7、OpenAPI3规范请求类型针对`format`属性的展示问题[Gitee#I8KRWV](https://gitee.com/xiaoym/knife4j/issues/I8KRWV) | ||
|
||
8、自定义文档】多服务聚合后如果服务名包含"-"会导致自定义文档页刷新报错[Gitee#I8EKAQ](https://gitee.com/xiaoym/knife4j/issues/I8EKAQ) | ||
|
||
9、移除文档`favicon.ico`的引用[Github#716](https://github.com/xiaoymin/knife4j/issues/716) | ||
|
||
## 橙单企业级插件支持 | ||
|
||
### 背景 | ||
|
||
**橙单低代码平台**作为`Knife4j`组件的老朋友,对于Knife4j的推广,应用都提供了极大的帮助和反馈,此次针对橙单低代码平台针对Spring Boot3+OpenAPI3版本的兼容适配,Knife4j也是提供了很好的支撑。 | ||
|
||
在做企业级插件需求介绍前,先给大家介绍下橙单低代码平台 | ||
|
||
**橙单低代码**平台简介: | ||
|
||
- 橙单代码生成工具,可导入多数据源和复杂的表关系,并生成开箱即用的前后端工程代码。 | ||
- 生成后工程代码全部采用主流技术栈搭建,完全遵循阿里巴巴编码规范。 | ||
- 较高的代码注释率,完整的开发部署手册和系列教程,可帮您快速上手完成后续的二次开发工作。 | ||
- VIP 服务和技术交流群,提供在线问题解答,并将您的合理反馈,及时更新到下一版本。 | ||
|
||
主要技术特点: | ||
|
||
- 前后端技术栈可根据项目规模和客户偏好按需选择,生成后代码保持统一的接口定义规则。 | ||
- 前端模板支持基于 Fragment 和 Block 的灵活布局方式,通过配置即可生成多样化的表单页面。 | ||
- 高质量的前后端工程代码,产品级的代码细节打磨和性能优化,近乎于 0 的代码重复率。 | ||
- 前沿的单表组合式查询,为数据库减负,让您的系统在 PaaS 云平台运行时更具伸缩性。 | ||
- 创新式生成基于主表模式的规范化服务间调用接口,服务组合像搭积木一样轻巧自如。 | ||
- 提供高可配置性的用户权限管理模块,目前已支持按钮级操作权限和标签级显示权限。 | ||
- 菜单级数据过滤权限,多种过滤策略任意组合。Mybatis 拦截器 + JSqlParser 组合,让代码侵入性将至最低。 | ||
- 支持定时任务代码生成,如流水表及其关联表分组聚合计算后批量刷新到统计表。 | ||
- 通过基于qdox的代码分析结果,可以 0 注解生成高准确度的 Postman API 接口文档 | ||
|
||
官网地址:[http://www.orangeforms.com/](http://www.orangeforms.com/) | ||
|
||
### 需求支撑 | ||
|
||
在橙单低代码平台中,对于接口的请求请求,橙单做了一层自定义的注解,可以方便开发者以JSON方式提交数据,代码示例如下: | ||
|
||
```java | ||
|
||
@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的接口效果展示如下图: | ||
|
||
![图1-橙单Plugin支持效果图](/images/changelog/4_5/image-20240107233830487.png) | ||
|
||
通过基于Knife4j个性化插件的支持+OpenAPI3规范的扩展,完成橙单企业级插件的兼容适配,方便橙单的用户能够在Spring Boot3+OpenAPI3规范的场景下,很好的使用Knife4j的接口文档展示。 | ||
|
||
### 解决方案 | ||
|
||
基于Springdoc-openapi项目提供的`GlobalOperationCustomizer`钩子函数,提供对扩展属性的支持。 | ||
|
||
springdoc-openapi项目提供了两大核心扩展接口: | ||
|
||
- 🏜️ `GlobalOperationCustomizer`:针对Operation级别的全局自定义扩展钩子函数,开发者可以对接口中每一个Operation进行扩展自定义实现,或调整,或修改,或增加扩展都行,Knife4j的部分增强特性就是基于此函数实现,可以参考代码[Knife4jJakartaOperationCustomizer.java](https://gitee.com/xiaoym/knife4j/blob/dev/knife4j/knife4j-openapi3-jakarta-spring-boot-starter/src/main/java/com/github/xiaoymin/knife4j/spring/extension/Knife4jJakartaOperationCustomizer.java) | ||
- 🏝️ `GlobalOpenApiCustomizer`:是针对整个OpenAPI级别的,开发者在分组或者分包后,得到的单个OpenAPI实例,开发者可以操纵全局的OpenAPI实例,该OpenAPI对象已经是springdoc解析过的实例对象,例如该issues中的需求,开发者只需要自定义创建新Operation对象,然后通过OpenAPI实例对象进行add添加即可完成此需求,部分扩展可以参考代码:[Knife4jOpenApiCustomizer.java](https://gitee.com/xiaoym/knife4j/blob/dev/knife4j/knife4j-openapi3-jakarta-spring-boot-starter/src/main/java/com/github/xiaoymin/knife4j/spring/extension/Knife4jOpenApiCustomizer.java) | ||
- 🎠 扩展实现类接口后,注入Spring的容器中即可 | ||
|
||
详情代码可参考:[knife4j-orangeforms-boot3-openapi3](https://gitee.com/xiaoym/swagger-bootstrap-ui-demo/tree/master/knife4j-orangeforms-boot3-openapi3) | ||
|
||
## 最后 | ||
|
||
本次4.5.0版本的发布,除了解决一些常规的issues问题,也是非常感谢橙单低代码平台的大力支持 | ||
|
||
大家如果有低代码平台的需求,可以考虑一下橙单低代码平台!!! | ||
|
||
官网地址:[http://www.orangeforms.com/](http://www.orangeforms.com/) | ||
|
||
当然,如果对于Knife4j对于各个企业级插件的需求支持,也欢迎大家通过issues或者平台进行反馈!!! |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.