网关Gateway整合Swagger调用页面时报错

写在前面:记录一下我在gateway整合swagger时遇到的坑。
一、报错信息如下:
Unable to infer base url. This is common when using dynamic servlet registration or when the API is behind an API Gateway. The base url is the root of where all the swagger resources are served. For e.g. if the api is available at http://example.org/api/v2/api-docs then the base url is http://example.org/api/. Please enter the location manually: xxxxxxxxx

二、寻找问题原因:
一开始遇到这个问题,我去网上百度,百度上描述的原因和解决方案非常的多,我基本尝试了用各种网上的方案来解决,发现都没有用。
所以我打算归于根本,通过根据自己项目上去找到问题的真正原因。
三、问题解决思路:
1、首先我检查了pom文件,看他是被哪些包依赖了,是不是那些依赖包的一些内容导致的网关中的swagger无法正常运行。
2、暂时没有发现问题,因为层层依赖关系太多了,一下不好找。
3、接着我继续调用swagger报错的接口,仔细查看控制台的报错信息。
4、在页面报错的同时,控制台报错是Class找不到,一个我没有引入的依赖。那么我就想着为什么我调用swagger接口会去调用这个我没有引入的依赖。


5、思考后我发现可能是log-inter这个依赖包所影响的,因为这个日志包是做了aop切面的操作,去拦截请求记录日志。
6、为了测试是不是这个log-inter依赖导致的问题,我先把依赖给注释掉,重启服务。

7、注释后,发现swagger接口恢复正常,那么说明就是这个包的问题所影响。

8、那么我们现在就是解决swagger与这个log-inter冲突的问题,经过我对log-inter里代码的查看,发现这个日子拦截器有提供注解的方式去忽略拦截。
9、我就开始给我网关swagger配置类接口上添加忽略的注解,并且将log-inter的依赖打开。

10、重启服务后,测试swagger页面是否正常。

发现swagger页面能够正常打开,这样便解决了这个问题。

posted @ 2020-03-29 16:41  Yubaba丶  阅读(5231)  评论(0编辑  收藏  举报