当前位置:网站首页 > R语言数据分析 > 正文

swagger无法访问(swaggerui访问)



问题表现如下:

添加swagger的配置之后,启动浏览器输入:http://127.0.0.1:8090/swagger-ui.html

一片空白

于是网上搜索了一下swagger的错误,大部分提供的解决方式如下。

添加如下配置:

 @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/").addResourceLocations( "classpath:/static/");   registry.addResourceHandler("/swagger-ui.html").addResourceLocations( "classpath:/META-INF/resources/");   registry.addResourceHandler("/webjars/").addResourceLocations( "classpath:/META-INF/resources/webjars/");   super.addResourceHandlers(registry); } 

一堆配置的地址,不太明白,于是看了一下swagger这个包里面的东西,发现其目录结构如下:

swagger包的目录结构

所以上述配置的作用,应该是怕swagger-ui.html找不到资源,所以添加了一下资源的搜索路径。到这里了,还是没有解决swagger-ui加载为空的问题。

于是尝试chrome debug一下(mac 下 F12是快捷键)

chrome debug

一个(x):typography.css的报错

idea打开swagger的源文件,文件为空,暂时不管这个错误,源文件就没有内容。

第二个(x):先点开traceback的中的链接,就是黑色文字的这些,发现是可以访问到js代码的,说明资源是可以正常访问。

继续深入....

点开报错的脚本,利用chrome的代码format打开看到报错的代码行如下

代码报错行

加上断点之后调试,看下这里传入的是什么?

断点调试

根本不是我们期待的:/swagger-ui.html,甚至不是一个合法的url,难怪会open这个url的时候报错。我们浏览器输入的是/swagger-ui.html,为什么到了swagger的代码中响应的url不是如此了。debug到这里猜到了原因。

我们在做web工程的时候通常会写一些拦截器。

比如我这个工程,我对于所有的web响应,错误和正确的都会用拦截器转化为以下格式

{"code":0, "message":"ok","data":""}

为了接口的统一,以上做法很常见,正是拦截器的存在导致swagger的响应参数不被swagger识别。

所以再修改拦截器,对于swagger的请求不拦截即可。

问题解决!!!

ps:我们的拦截器处理得比较暴力,是根据返回类型来判断是否是业务服务的请求。用类型判断的话,swagger拦截器需要处理的类型有:SpringFox的Json, LinkedHashMap,ArrayList等。

到此这篇swagger无法访问(swaggerui访问)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • 华为模拟器路由器配置ip(华为模拟器rip路由配置)2025-11-12 18:54:06
  • docker版本号查询(docker版本号有哪些)2025-11-12 18:54:06
  • ueditor官网文档(ueditor在线编辑器)2025-11-12 18:54:06
  • yml文件怎么导入(yml文件导入clash verge)2025-11-12 18:54:06
  • 跨域请求origin为null(跨域请求 options)2025-11-12 18:54:06
  • networkstate怎么进入(networkstate怎么打开)2025-11-12 18:54:06
  • ipad无法连接到app stroe(Ipad无法连接到apple store怎么解决)2025-11-12 18:54:06
  • vmware 密钥(vmware密钥能用几次)2025-11-12 18:54:06
  • argparse用法(ar的用法)2025-11-12 18:54:06
  • aurora是什么牌子衣服(aure是什么牌子)2025-11-12 18:54:06
  • 全屏图片