1.起因
多模块项目结构如下:
swagger提取为公共模块
ResponseHandler
负责处理统一结果返回,SwaggerConfig
配置swagger,controller和启动类与公共模块不在一个包下
使用了swagger显示接口文档信息,SwaggerConfig
也正常配置,UserApplication
中也配置了扫描包的路径,但是出现扫描swagger上层包没有出现接口文档的问题(swagger-ui.html 没有404)必须定位到config的包才可以扫描,且同时扫描上层包的话也会不出现接口文档
2.发现问题
自己调试半天没有找到问题所在,最后在同学的帮助下,发现问题
居然出现在ResponseHandler
统一结果返回中
原本的代码是这样的:
会拦截所有controller的请求然后进一步封装返回结果的结构,原因
就是在这里:将swagger的返回也拦截封装了!!
导致swagger的前端无法接收到正常的响应格式,找到问题就好解决,打印出请求URI找到swagger的请求路径
3.解决办法
然后手动添加排除路径,如果是排除路径则直接放行不封装响应信息
最后大功告成!!!!