访问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转型错误问题

Logo

加入社区!打开量化的大门,首批课程上线啦!

更多推荐