Knife4j集成进SpringBoot项目报错:TypeError: n.forEach is not a function

一、Knife4j集成SpringBoot

1.1问题发现

接入了Knife4j之后,直接访问应用的doc.html页面,直接提示报错:Knife4j文档请求异常。F12查看具体的报错信息,发现如下

app.23f8b31d.js:1 TypeError: n.forEach is not a function
    at Oe.analysisGroupSuccess (app.23f8b31d.js:1:173354)
    at app.23f8b31d.js:1:171658
    at app.23f8b31d.js:1:249418

1.2问题原因

出现这种问题,可能有多种原因,这里,根据我的排查,原因可能是因为后端改变了和knife4j相关接口的返回格式,因为我的后端,实现了ResponseBodyAdvice接口,做了一个统一返回格式的封装。所以,这里我尝试只对某些自己开发的接口,做统一返回:
Knife4j集成进SpringBoot项目报错:TypeError: n.forEach is not a function_第1张图片
个人理解:ResponseBodyAdvice 接口是在 Controller 执行 return 之后,在 response 返回给客户端之前,执行的对 response 的一些处理,可以实现对 response 数据的一些统一封装或者加密等操作。这就破坏了Knife4j需要的返回格式

1.3问题解决

目前的话,为满足项目需求,暂时对需要特殊自定义 返回结果的controller单独分包,而对普通controller,则还是统一扫描。

二、SpringBoot项目集成Knife4j配置参考

2.1pom.xml

版本:SpringBoot 2.x 集成 knife4j openapi2
详细参考官网:Knife4j官网

    <parent>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-starter-parentartifactId>
        <version>2.5.6version>
        <relativePath/> 
    parent>
    <dependency>
        <groupId>com.github.xiaoymingroupId>
        <artifactId>knife4j-openapi2-spring-boot-starterartifactId>
        <version>4.0.0version>
    dependency>

    <dependency>
        <groupId>io.springfoxgroupId>
        <artifactId>springfox-swagger-uiartifactId>
        <version>2.10.5<

你可能感兴趣的:(spring,boot,java,spring,Knife4j,spring,cloud)