swagger与springmvc集成异常记录

来源:互联网 发布:node pm2 静态目录 编辑:程序博客网 时间:2024/05/21 07:52
这几天在项目中加入swagger,项目用的是springmvc,spring用的4.1.1,和大家一样,在网上找了个帖子,看了下步骤不复杂,就愉快的开始做了,但是,但是就是这样华丽而顺畅的入坑了,折腾好几个小时,记录下,希望能节省队友时间。

问题一
描述:页面提示Failed to load API definition,并且接口(http://127.0.0.1:8080/member/api-docs)可以返回json。

结论:swagger-ui版本与服务端返回接口json值不兼容,下载低版本swagger-ui即可。可用地址https://github.com/swagger-api/swagger-ui/tree/v2.2.10 下载后将dist目录拷贝到webapps下即可。
分析:
按照网上帖子愉快部署后,发现这个蛋疼问题,搜了下,还没什么答案,后面各种查资料,git上下载别人demo,对比接口地址 http://127.0.0.1:8080/member/api-docs返回值,发现返回的json和可用项目的差不多,并且json格式中有版本信息1.2;然后看了swagger-ui和项目中不一样,后面去swagger-ui上看了下兼容性,地址https://github.com/swagger-api/swagger-ui,明确的写了,ui兼容的版本,网上那些帖子略坑,都是说直接到git上下载后dist拷贝到webapps,从3.x版本ui已经不支持1.2的json格式了,所以最高下载2.2.10才支持springmvc,同时看了下swagger-springmvc这个包,2015年后就没有更新了。所以只要是用springmvc这个包,服务端json必定不超过1.2,所以ui版本只能选兼容1.2版本的。

swagger-ui版本兼容列表,地址

swagger-springmvc.jar包版本,最新的是2015年的1.0.2版本。

贴一个api-docs接口返回的json值

{"apiVersion":"1.0","swaggerVersion":"1.2","apis":[{"path":"/default/pay-controller","description":"Pay Controller","position":"0"},{"path":"/default/user","description":"用户管理","position":"0"}],"authorizations":[],"info":{"title":"时光商店","description":"内部人员开发文档","termsOfServiceUrl":"本API为了解决安卓端与后台连接问题","contact":"835379184@qq.com","license":"无许可证","licenseUrl":"115.28.36.253:8080"}}

问题二
描述:跨域权限问题,页面提示Can't read from server. It may not have the appropriate access-control-origin settings.
结论:这个比较直观,将浏览器地址栏主机名改成和接口地址主机名一样即可。





问题三
既然现在springmvc已经没有更新的包了,哪这些新版本的swagger-ui给谁用。ok,你猜对了,给springboot,springfox这些用喽。
springfox可以参考这位仁兄的:http://blog.csdn.net/channingzhao/article/details/52923215
原创粉丝点击