AdamQ

Results 10 comments of AdamQ

@jamesxujoy 你用的也是knife4j-openapi3-jakarta-spring-boot-starter4.5.0的版本么?我本地用你这么配置之后,在doc.html打开中还是不能上传文件,有点囧...以下是本地贴图 1.业务代码(knife4j-openapi3-jakarta-spring-boot-starter 4.5.0实现方式) ![01](https://github.com/xiaoymin/knife4j/assets/22726645/16610c86-fabc-4b81-a99d-e92c868e8762) 2.前端访问(knife4j-openapi3-jakarta-spring-boot-starter 4.5.0实现方式) ![02](https://github.com/xiaoymin/knife4j/assets/22726645/4e994030-1553-4b03-8fe0-9fadbf0eb874) PS: 旧版knife4j-spring-boot-starter 3.0.3(升级前的前端正常访问) ![03](https://github.com/xiaoymin/knife4j/assets/22726645/f0d67087-64ae-49b1-bcc3-42441588030d) 旧版knife4j-spring-boot-starter 3.0.3(后端配置) ![04](https://github.com/xiaoymin/knife4j/assets/22726645/53b92664-6fb1-45d4-abb2-5b5dc05c51ba)

@zhangchaoxu 感谢回复 不过我升级Knife到4.5.0之后,接收file使用的注解还是@RequestPart并没有更改,请查看[[1.业务代码(knife4j-openapi3-jakarta-spring-boot-starter 4.5.0实现方式)](https://github.com/xiaoymin/knife4j/issues/775#issuecomment-2130715455)]

@zhangchaoxu 厉害 ![05796003](https://github.com/xiaoymin/knife4j/assets/22726645/87ad87ad-82a8-4a15-a4eb-5c552042bc95),我把我本地接口上的@Parameters注解注释掉之后,也是可以的了,原来Knife4j可以自动识别@RequestPart注解;不过这样,对于其他参数,在swagger文档中就没法进行参数说明了,是不是? ![001](https://github.com/xiaoymin/knife4j/assets/22726645/9bd99c54-12bd-4942-a29d-9667de5e8776)

@zhangchaoxu 按照兄台的配置,本地也测试成功了!感谢!

@zhangchaoxu 兄台,请教你,升级到Knife4j4.5.0之后,你的Controller层排序还能正常吗?我本地使用@ApiSupport注解排序时发现,第一个分组有问题,第二个分组又是正常的,在F12中看到第一个分组中竟然没有返回tags属性,真的奇怪,不过我推测可能是Knife4j的bug。 附图 图一:本地KnifeConfig配置 ![01](https://github.com/xiaoymin/knife4j/assets/22726645/85873adb-0aa3-477c-9926-72448687ef0a) 图二:分组一和分组二Swagger请求访问排序对比(想让Controller层按照给定的order值进行排序,排序号即是分组Controller中序号值,如1-系统公共方法,那么1就是@ApiSupport(order = 1)中的order值) ![02](https://github.com/xiaoymin/knife4j/assets/22726645/28a92c7e-7ea8-4647-912e-91ed0b4e96d7) 图三:分组一和分组二F12中区别 ![03](https://github.com/xiaoymin/knife4j/assets/22726645/d07e4564-f853-4364-bc4f-1d0e0b06524b)

针对问题2已经有解决方法! 在Gitee中翻看到有同类型问题,在[Gitee-I7U2I0](https://gitee.com/xiaoym/knife4j/issues/I7U2I0)中"BlueCup"提到:解决了我的问题,我是前端没有出现tags节点,原来是@Tag中没有写description,我的排序可以了。 原来我在系统模块中的Controller中所有接口写了description,但是没有文字描述,导致系统模块在Swagger请求中,没出现tags标签,所以导致在类Controller中的@ApiSupport设置的值不生效!! 后续:为什么不给@Tag中的description进行文字描述,前端请求中就出现不了tags标签,进而导致@ApiSupport失效,确实是个问题哈~ @xiaoymin

针对问题3已经得到解决! 见[Knife4j从3.0.3升级至4.5.0的记录](https://www.jianshu.com/p/e1d8f55a4d2a?v=1717752155937)中的`Knife4jConfig配置`,主要就是在GroupedOpenApi的初始化中,增加addOpenApiCustomizer自定义配置,获取到全部Paths后,使用本地封装的将原来的ApiResponses替换掉即可,目前替换的就是常用的put/get/delete/post四种请求方式。

针对问题4,本地最新数次重启访问Swagger均未复现,且留待看;现在就只剩下问题1了!

@xiaoymin 针对问题1,目前也有了解决办法,在Knife4jConfig配置类中,设置group分组名后,再次设置displayName为中文名称即可,如下: ```java // 系统接口 @Bean public GroupedOpenApi api1() { // 创建了一个api接口的分组 return GroupedOpenApi.builder() // 分组名称,使用英文,中文访问异常(使用displayName设置中文名,避免直接使用group设置中文时访问异常) .group("01-sys-api") .displayName("01-系统接口") // 使用displayName设置中文接口分组名时,group仍不可或缺 .packagesToScan("cn.keyidea.sys") // 自定义全局响应码 .addOpenApiCustomizer((this::setCustomStatusCode)) .build(); } ``` 具体见:[SpringBoot3.3.0集成Knife4j4.5.0实战](https://www.jianshu.com/p/e1d8f55a4d2a#三、Knife4jConfig配置) --- 至此该文档中所列5个问题均得到解决,感谢作者及各位!🙏

参考这篇文章[SpringBoot3.3.0集成Knife4j4.5.0实战](https://www.jianshu.com/p/e1d8f55a4d2a)中7.1章节 ![image](https://github.com/user-attachments/assets/1d574bdf-03a1-45ba-a55a-38452fe6964e)