SpringBoot整合Shiro时Spring-openapi&Swagger相关遇到的问题
SpringBoot整合Shiro、Spring-openapi、Swagger相关遇到的问题
·
SpringBoot整合Shiro时Swagger/Spring-openapi相关遇到的问题
访问http://<项目路径>/swagger-ui.html无法正常显示
1.Unable to render this definition
问题描述

无法正常显示API文档,分析是服务端返回数据格式有误,缺失对应版本标识符
排查问题
调用F12控制台查看接收到的数据,发现返回的json字符串里面有对"符号的转义,导致无法正常解析json
这里跟随控制台的log找到输出api的类与具体调用方法

这里应该是采集有标记openapi注解的API数据,封装进OpenAPI对象中。Debug后跟随方法跳出到外部调用,在writeJsonValue方法中将JavaBean转为JSON


此处字符串还正常,没有带额外的转义符,后面继续向外跳转排查,但没有找到对此字符串直接进行操作的方法
解决问题
后面在stackoverflow找到类似返回json字符串被加入转义符的问题:问题链接
参考外网答案,发现是和Spring的返回信息转换器相关
排查后发现是对SpringMvc配置时,移除了StringHttpMessageConverter转换器的原因。
之前是因为封装了统一返回处理时,都是转换成json字符串返回,但会直接出现String相关的转型错误,于是配置移除了String的信息处理类
尝试取消移除StringHttpMessageConverter转换器时,Swagger UI可以正常显示API文档

//TODO 待解决原Cast转型错误问题
更多推荐


所有评论(0)