knife4j/swagger救援第一现场
1、前方来报,测试环境springboot项目无法启动,现场如下:
Error starting ApplicationContext. To display the auto-configuration report re-run your application with 'debug' enabled.
[ERROR] 2024-03-20 12:54:42,718 --main-- [org.springframework.boot.diagnostics.LoggingFailureAnalysisReporter] ***************************
APPLICATION FAILED TO START
*************************** Description: Parameter 0 of constructor in springfox.documentation.swagger.schema.ApiModelPropertyPropertyBuilder required a bean of type 'springfox.documentation.spring.web.DescriptionResolver' that could not be found. Action: Consider defining a bean of type 'springfox.documentation.spring.web.DescriptionResolver' in your configuration.
2、现场痕迹很明显,类ApiModelPropertyPropertyBuilder中需要一个bean DescriptionResolver,但是无法找到,故直接走入现场,如下图所示:
3、根据经验得知是bean DescriptionResolver无法被正常注入导致的,很大情况可能是因为jar冲突导致,寻找蛛丝马迹,如下图所示:
4、定位到原因是项目中引用其他项目中的jar,结果导致了项目中有两个不同版本的knife4j-spring-boot-starter(一个2.0.2,一个2.0.7),简单粗暴,把版本都调整为2.0.2。原本想着到这里问题都已经解决了。下意识的看了下前端swagger接口是否正常,结果发现swagger接口展示有问题:
页面提示:Knife4j文档请求异常
页面console控台提示:Unexpected token ' in JSON
5、谷歌浏览器前端debug一顿调试,定位问题是因为后端返回的数据结构有问题,根本原因因为版本2.0.2较低,无法解析ApiModelProperty中的example属性为json字符串,如下图所示:
属性使用ApiModelProperty注解后,在给与example类型的时候里面写了一个json字符串
@ApiModelProperty(name="xx",example="{'xx':'dd'}")
private String test;
就是类似以上这种情况,导致springfox-swagger提供的接口/v2/api-docs
返回的json非法,使用前端的JSON.parse()
函数无法转换为JSON对象
6、处理方案:
a、knife4j统一使用版本2.0.2去掉example
b、knife4j统一使用版本2.0.7或其他版本,可以支持example
至此问题解决。
knife4j/swagger救援第一现场的更多相关文章
- Swagger以及knife4j的基本使用
Swagger以及knife4j基本使用 目录 Swagger以及knife4j基本使用 Swagger 介绍: Restful 面向资源 SpringBoot使用swagger Knife4j -- ...
- .Net Core---- WebApi生成Swagger接口文档
1. Swagger是什么? Swagger 是一个规范和完整的框架,用于生成.描述.调用和可视化 RESTful 风格的 Web 服务.总体目标是使客户端和文件系统作为服务器以同样的速度来更新.文件 ...
- MP实战系列(二)之集成swagger
其实与spring+springmvc+mybatis集成swagger没什么区别,只是之前写的太不好了,所以这次决定详细写. 提到swagger不得不提rest,rest是一种架构风格,里面有对不同 ...
- golang学习笔记7 使用beego swagger 实现API自动化文档
golang学习笔记7 使用beego swagger 实现API自动化文档 API 自动化文档 - beego: 简约 & 强大并存的 Go 应用框架https://beego.me/doc ...
- ASP.NET Core WebApi使用Swagger生成api说明文档
1. Swagger是什么? Swagger 是一个规范和完整的框架,用于生成.描述.调用和可视化 RESTful 风格的 Web 服务.总体目标是使客户端和文件系统作为服务器以同样的速度来更新.文件 ...
- ASP.NET Web API 使用Swagger使用笔记
https://www.cnblogs.com/lhbshg/p/8711604.html 最近换了工作,其中Webapi这块没有文档,之前有了解过Swagger借此机会好好整理下常用的地方分享给有需 ...
- .Net Core 使用swagger UI
swagger UI 第一步:首先添加包Swashbuckle.AspNetCore (可通过微软添加包命令Install-Package 包名进行添加,也可以通过管理NuGet程序包进行添加) 第二 ...
- Web Api 接口测试工具:Swagger
前言:WebApi接口开发完毕后,交付给前端人员或手机端开发者时接口说明文档是必不可少的配套设备,如果公司流程不规范大家使用口口相传的交接方式,而且没有改进的欲望,那你可以到此为止了.Swagger是 ...
- ASP.NET Web API 使用Swagger
ASP.NET Web API 使用Swagger使用笔记 最近换了工作,其中Webapi这块没有文档,之前有了解过Swagger借此机会好好整理下常用的地方分享给有需要的小伙伴. 概述: 1.s ...
- swagger上的接口写入数据库
一.依赖 virtualenv -p python3.6 xx pip install scrapy pip install pymysql 二. 1.创建项目和spider1 scrapy star ...
随机推荐
- 一道SQL面试题
表结构如下 是一张递归格式的表 使用SQL转换成如下格式 SQL实现 使用SQL转换成上图的格式 SQL代码: WITH T_Recur AS ( SELECT Id,1 num, cast(name ...
- SysAK 应用抖动诊断篇—— eBPF又立功了! | 龙蜥技术
简介:且看 SysAK 是如何打造一款性能开销不大.安全可靠.且灵活的关中断检测工具. 文 / 系统运维 SIG 编者按:还记得曾经风靡一时的狄仁杰探案系列之<他抖任他抖,IO诊断在我手& ...
- Nacos 开源、自研、商业化三位一体战略解读
简介: Nacos作为整个阿里云原生三位战略中的核心组成部分,我们在2018年以Configserver/VIPServer/Diamond为基础通过Nacos开源输出阿里十年沉淀的注册中心和配置中心 ...
- [Gin] 运行模式检测和设置 (mode.go)
// 设置方式 gin.SetMode(gin.ReleaseMode) // 检测方式 if gin.Mode() == gin.DebugMode { } 更多相关信息,建议直接去看源代码. Re ...
- 鸿蒙HarmonyOS实战-ArkUI事件(键鼠事件)
前言 键鼠事件是指在计算机操作中,用户通过键盘和鼠标来与计算机进行交互的行为.常见的键鼠事件包括按下键盘上的键.移动鼠标.点击鼠标左键或右键等等.键鼠事件可以触发许多不同的操作,比如在文本编辑器中输入 ...
- Photoshop批量替换图层的方法
平时做图片,应该有遇到这样的场景,比如P奖状.P邀请函,内容是一样的,但是图片上的名字是不一样的,要是要P100张的话,一个个手动复制改名字肯定会吐血(╯°□°)╯︵ ┻━┻ Photoshop里有个 ...
- 升级版header吸顶后滑动变色(二)
<van-nav-bar fixed id="opacityHeader" //拉伸状态显示的header title="赛事" ...
- 普冉PY32系列(十五) PY32F0系列的低功耗模式
目录 普冉PY32系列(一) PY32F0系列32位Cortex M0+ MCU简介 普冉PY32系列(二) Ubuntu GCC Toolchain和VSCode开发环境 普冉PY32系列(三) P ...
- CMake 教程(待完善)
Cmake 教程 写在前面 如果工程只有几个文件,直接编写Makefile更直接明了 如果使用C.C++.之外的语言,请不要使用cmake 如果使用的语言有非常完备的构建体系,不需要使用cmake C ...
- TeamViewer 9 和 10 即将停用 尝试切换到 Splashtop
TeamViewer 9 和 TeamViewer 10 将于2021 年 6 月 1 日到期停用.当这两个版本的 TeamViewer 到期时,用户将无法再远程访问其计算机和设备. 这意味着要继续使 ...