-
Notifications
You must be signed in to change notification settings - Fork 610
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
关于SpringBoot2.7.18升级到3.2.x后的Knife4j使用的系列问题汇总(已全部解决) #775
Comments
感谢反馈,我后面有空看一下 ps:其实通过issues反馈交流更好:) |
文件可以通过这种方式的注解去配置:@parameter(name = "file", description = "文件", required = true, content = @content(mediaType = MediaType.APPLICATION_OCTET_STREAM_VALUE, schema = @Schema(type = "string", format = "binary"))),我试过是可以的。 |
@jamesxujoy 你用的也是knife4j-openapi3-jakarta-spring-boot-starter4.5.0的版本么?我本地用你这么配置之后,在doc.html打开中还是不能上传文件,有点囧...以下是本地贴图 2.前端访问(knife4j-openapi3-jakarta-spring-boot-starter 4.5.0实现方式) PS: |
@jmszwzr 问题5文件上传不显示的问题,反馈一下解决办法,将@RequestParam改为@RequestPart即可。 我尝试了@parameter修改,@PostMaping中定义consumer,都不生效。最后在issue407找到答案。将@RequestParam改为@RequestPart即可。 |
@zhangchaoxu 感谢回复 不过我升级Knife到4.5.0之后,接收file使用的注解还是@RequestPart并没有更改,请查看[1.业务代码(knife4j-openapi3-jakarta-spring-boot-starter 4.5.0实现方式)] |
那就更诡异了,我现在也是用的knife4j-openapi3-jakarta-spring-boot-starter 4.5.0+springboot 3.3.0。 |
@zhangchaoxu 厉害 |
我又试了一下,@parameters是可行的,参数解释也能出来,这么写试试@parameter(name = "file", description = "文件", required = true, in = ParameterIn.DEFAULT, schema = @Schema(name = "file", format = "binary")) |
@zhangchaoxu 按照兄台的配置,本地也测试成功了!感谢! |
This comment was marked as resolved.
This comment was marked as resolved.
针对问题2已经有解决方法! 在Gitee中翻看到有同类型问题,在Gitee-I7U2I0中"BlueCup"提到:解决了我的问题,我是前端没有出现tags节点,原来是@tag中没有写description,我的排序可以了。 原来我在系统模块中的Controller中所有接口写了description,但是没有文字描述,导致系统模块在Swagger请求中,没出现tags标签,所以导致在类Controller中的@apisupport设置的值不生效!! 后续:为什么不给@tag中的description进行文字描述,前端请求中就出现不了tags标签,进而导致@apisupport失效,确实是个问题哈~ @xiaoymin |
针对问题3已经得到解决! 见Knife4j从3.0.3升级至4.5.0的记录中的 |
针对问题4,本地最新数次重启访问Swagger均未复现,且留待看;现在就只剩下问题1了! |
@xiaoymin 针对问题1,目前也有了解决办法,在Knife4jConfig配置类中,设置group分组名后,再次设置displayName为中文名称即可,如下: // 系统接口
@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实战 至此该文档中所列5个问题均得到解决,感谢作者及各位!🙏 |
升级SpringBoot为3.2.4后,同步升级Knife4j到4.5.0后的系列问题如下
1、分组名称不支持中文名称[影响指数:4/5]
2、使用@tag中order字段对控制器排序不生效[影响指数:5/5]
3、无法定义全局错误码信息[影响指数:5/5]
4、控制器层返回数据为xml(目前可解决,解决方式不完美)[影响指数:4/5]
5、新版Knife4j文件上传如何通过注解设置接口参数[影响指数:5/5]
详细问题描述、代码设置及截图等请参见pdf文档:SpringBoot2.7.18升级至3.2.x后的Knife4j的系列问题-v1.0.pdf
如作者有时间,请帮忙看下,不胜感谢!
(2024-04-16 原本想通过在Github附图的二维码加群,发现群在4.14已过期,无法才在Github上提Issues,第一次提,如有不当之处,请指正,感谢!)
The text was updated successfully, but these errors were encountered: