需要结合你自己的业务来判断是那种原因造成的。
knife官方文档针对此错误的说明:https://doc.xiaominfo.com/faq/knife4j-exception.html
SpringBoot拦截器全局拦截登陆当集成knife4j遇到的“Knife4j文档请求异常问题”问题解决方案拦截器配置文件里配置不拦截静态资源登录拦截器详细配置除此之外可能还有别的原因问题集成knife4j后,无法访问api文档。解决方案拦截器配置文件里配置不拦截静态资源因为swagger的页面都属于静态资源,需要在拦截器里排除掉。package com.minglei.hotnews.config;import org.springframework.beans.factory.ann
通过SpringBoot集成Api文档(Swagger文档)和(knife4j文档)。启动项目后
Swaggger文档访问地址:localhost:8888/swagger-ui.html
knife4j文档访问地址:localhost:8888/doc.html
自己无意把@RestControllerAdvice的扫描范围删除了,导致Knife4j的接口返回也被封装了。。。把basePackages范围限制到Controller类解决。
今天来分享一下自己爬过的坑,就是在使用swgger的时候,页面老是提示“Knife4j文档请求异常”的报错信息,如下图所示:
这个时候在检查完配置文件,以及接口文件都没有错的情况下,可以找找是否出现了下面的情况:
1、接口返回参数中带有List集合,且集合的属性赋予了exmpale属性,例如:
2、接口返回参数中带有对象,且对象属性赋予了exmpale属性,例如:
以上两种情况的出现会直接影响swgger页面的显示,删掉之后就正常了:
后来发现是因为我配置了统一token校验,而拦截器把swagger给拦截了
所以我们只需要在注册生效的拦截器中加入对swagger的判定和放行就可以了
//判断是不是swagger是就放行
HandlerMethod handlerMethod=(HandlerMethod)handler;
if("springfox.documentation.swagger.web.ApiResourceController".equals
什么是Swagger?Swagger 是一个用于生成、描述和调用 RESTful 接口的 Web 服务。通俗的来讲,Swagger 就是将项目中所有(想要暴露的)接口展现在页面上,并且可以进行接口调用和测试的服务。从上述 Swagger 定义我们不难看出 Swagger 有以下 3 个重要的作用:将项目中所有的接口展现在页面上,这样后端程序员就不需要专门为前端使用者编写专门的接口文档;当接口更新之后,只需要修改代码中的 Swagger 描述就可以实时生成新的接口文档了,从而规避了接口文档老旧不能使用的问题;通过 Swagger 页面,我们可以直接进行接口调用,降低了项目开发阶段的调试成本。
什么是Knife4J? 和Swagger什么关系?本质是Swagger的增强解决方案,前身只是一个SwaggerUI(swagger-bootstrap-ui)Knife4j是为Java MVC框架集成Swagger生成Api文档的增强解决方案, 前身是swagger-bootstrap-ui,取名kni4j是希望她能像一把匕首一样小巧,轻量,并且功能强悍!Knife4j的前身是swagger-bo
Knife4j是为Java MVC框架集成Swagger生成Api文档的增强解决方案,前身是swagger-bootstrap-ui,取名kni4j是希望她能像一把匕首一样小巧,轻量,并且功能强悍!
Knife4j的前身是swagger-bootstrap-ui,为了契合微服务的架构发展,由于原来swagger-bootstrap-ui采用的是后端Java代码+前端Ui混合打包的方式,在微服务架构下显的很臃肿,因此项目正式更名为knife4j。
更名后主要专注的方面:
前后端Java代码以及前端Ui模块进行分离,在微服务架构下使用更加灵活
提供专注于Swagger的增强解决方案,不同于只是改善增强前端Ui部分