记一次knife4j文档请求异常 SyntaxError: Unexpected token ‘<‘, ... is not valid JSON

knife4j页面报错问题定位

前几天开发新接口,开发完成后想使用knife4j测试一下接口功能,突然发现访问页面报错提示:knife4j文档请求异常,但之前运行还是正常的,想想会不会与升级依赖有关系,启动其他微服务发现文档接口访问正常,排除因依赖版本升级导致在线API文档无法使用情况,还是和本服务新增接口有关系。

定位问题

首先f12打开调试台,重新刷新页面,看到console有报错提示
在这里插入图片描述
查看报错提示信息好像是某个返回结构不是json形式,还是有点模糊,于是搜索相关错误信息,并未发现类似问题

查询开源组件issues

于是进入knife4j的开源仓库,找到了一个类似问题,发现有其他同学提过类似问题
开源组件issue地址
https://gitee.com/xiaoym/knife4j/issues/I92QJB
在这里插入图片描述
在这里插入图片描述

大佬给出问题原因可能是:接口响应的内容,不是json,找找你框架自己的原因,于是重新回到自己的接口上面

定位具体有问题的接口

由于项目接口非常多,高达几百个,无法精准定位到时具体哪个接口导致加载页面报错,虽然该问题不影响具体功能,但是遇到问题不解决有种如鲠在喉的感觉。没办法采用笨方法,查看最近新增的Controller,采用折半形式终于找到了产生问题的Controller类,然后采用类似方法继续找到了产生问题的接口

@ApiOperation(value = "业务系统大屏", notes = "业务系统大屏")
@PostMapping(value = "/business/detail", produces = "application/json;charset=UTF-8")public BusinessDetailResults businessLeakDetail(@Valid @RequestBody BusinessDetailCondition condition) throws Exception {return businessDetailService.businessDetail(condition);}
定位根因

对比接口和其他接口定义差不多没有发现啥明显问题,然后进入返回结果BusinessDetailResults类发现类上没有添加@ApiModel怀疑是因为这个问题导致的,于是添加上注解,然后重启服务发现问题仍然没有解决,于是把目光聚集到BusinessDetailCondition类上,进入该类好像也没有啥明显问题

@ApiModel(value = "业务系统查询条件")
public class BusinessDetailCondition extends PageCondition {@ApiModelProperty(value = "区域ID", example = "[1,2,3]")private List<Integer> areaIds;@ApiModelProperty(value = "租户ID", example = "[1,2,3]")private List<Integer> tenantIds;@ApiModelProperty(value = "url集合", example = "['https://baidu.com]'")@NotEmptyprivate List<String> domainList;......
}

当时怀疑难道是因为中括号导致无法解析,于是将三个中括号去除,然后访问在线文档页面发现页面可以正常访问了,是否可以下结论是中括号引起的呢?查看接口的请求实例
在这里插入图片描述

发现本来应该是数组的字段全变成了string类型,想想不应该因为中括号的存在导致api在线文档页面无法访问,于是继续测试发现只有domainList的example在添加[]的情况下会导致页面报错,为什么其他两个不会报错呢,继续查看上面的页面报错信息恍然明白,其他两个字段example中也使用了[],其实是因为字段类型都是Integer类型无需使用双引号包裹,重新将domainList字段描述进行修改

@ApiModelProperty(value = "url集合", example = "[\"https://baidu.com\"]")

重新启动微服务,访问在线文档页面发现恢复正常。最后发现是其他同事在添加描述时候不小心没有对string类型添加双引号包裹导致页面在加载时候解析这个json报错
在这里插入图片描述

总结:

其实上面描述的问题只是一个很小很小的疏忽导致在线接口文档无法访问,还好没有影响到生产环境其他功能。本篇文章也只是记录一下生产过程中的一个小问题的定位和处理过程,但是每个人的情况都不尽相同,希望对您在遇到相同问题时候有一点帮助。回头再看一下报错信息,你会发现其实已经给出了具体提示,只是一开始我们没有理解而已。以此记录一下,希望自己下次可以关注细节
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/420797.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何优化谷歌排名更有效?

要想提高排名&#xff0c;首先得从用户的角度出发。要想他们在搜索时最关心什么问题&#xff0c;急需解决哪些痛点&#xff0c;之后要做的就是创建GHA高质量内容&#xff0c;创建内容时尽量深入探讨这些问题&#xff0c;而不是泛泛而谈。内容要自然&#xff0c;尽量避免过多的关…

StorageSync数据缓存API

uni.setStorageSyncs参数:将 data 存储在本地缓存中指定的 key 中&#xff0c;会覆盖掉原来该 key 对应的内容&#xff0c;这是一个同步接口。 uni.setStorageSync函数里面写两个参数,分别是key和值,两个参数名称可以随便取,如果有同名的key,那么后面key的值会覆盖掉前面key的值…

基于C#的UDP协议消息传输

1. 服务端 internal class Program{static void Main(string[] args){//1.创建SocketSocket socketServer new Socket(AddressFamily.InterNetwork,SocketType.Dgram,ProtocolType.Udp);//2.绑定IP、端口号EndPoint endPoint new IPEndPoint(IPAddress.Parse("127.0.0.1&…

Deep Ocr

1.圈出内容,文本那里要有内容.然后你保存,并导出数据集. 2.找出deep_ocr_recognition_training_workflow.hdev 文件.修改“DatasetFilename : Test.hdict” 310行 write_deep_ocr (DeepOcrHandle, BestModelDeepOCRFilename) 3.推理test.hdev 但发现很慢&#xff0c;没有mlp…

深入RabbitMQ世界:探索3种队列、4种交换机、7大工作模式及常见概念

文章目录 文章导图RabbitMQ架构及相关概念四大核心概念名词解读 七大工作模式及四大交换机类型0、前置了解-默认交换机DirectExchange1、简单模式(Simple Queue)-默认DirectExchange2、 工作队列模式(Work Queues)-默认DirectExchange3、发布/订阅模式(Publish/Subscribe)-Fano…

【IEEE独立出版 | 往届快至会后2个月检索,刊后1个月检索】2024年第四届电子信息工程与计算机科学国际会议(EIECS 2024)

在线投稿&#xff1a;学术会议-学术交流征稿-学术会议在线-艾思科蓝 电子信息的出现与计算机技术、通信技术和高密度存储技术的迅速发展并在各个领域里得到广泛应用有着密切关系。作为高技术领域中重要的前沿技术之一&#xff0c;电子信息工程具有前瞻性、先导性的特点&#x…

MySQL 查询优化秘籍:让你的数据库查询飞起来

《MySQL 查询优化秘籍&#xff1a;让你的数据库查询飞起来》 在数据库应用中&#xff0c;高效的查询性能至关重要。MySQL 作为广泛使用的关系型数据库&#xff0c;掌握一些常用的查询优化方法可以极大地提升系统的响应速度和性能。今天&#xff0c;我们就来一起探讨常用的优化…

NSSCTF reserve wp--非常简单的逻辑题

也可参考这篇文章&#xff1a; 本题并不是拖入ida中&#xff0c;进行静态分析&#xff0c;下载文件后文件名是py&#xff0c;我们将其重命名(即修改后缀为.py) (如图) 打开后分析以下代码 逆向一下有点麻烦&#xff0c;看了大佬的题解&#xff0c;说是直接正向爆破一下&#x…

萱仔环境记录——git的使用流程:以上传一个项目进入GitHub仓库为例子

前段时间我已经不使用学校的电脑了&#xff0c;在自己的笔记本上安装了git&#xff0c;准备好好把我这几年做的项目整理一下进行开源&#xff0c;由于前几次的面试&#xff0c;一些公司考核到了git的用法&#xff0c;虽然平时我也在使用git对自己的项目进行管理&#xff0c;但还…

华为 HCIP-Datacom H12-821 题库 (9)

有需要题库的可以看主页置顶 V群进行学习交流 1.以下关于 RSTP 保护功能的描述&#xff0c;错误的是哪一选项&#xff1f; A、环路保护可以部署在根端口上&#xff0c;以防网络中形成环路 B、环路保护可以部署在Alternate 端口上&#xff0c;以防网络中形成环路 C、BPDU 保…

导入torch时,报错 Error loading “C:\Users\Thinkpad\AppData\Roaming\Python\Python311\site-packages\torch\li

1.报错内容&#xff1a; Error loading "C:\Users\Thinkpad\AppData\Roaming\Python\Python311\site-packages\torch\lib\fbgemm.dll" or one of its dependencies. 2.报错原因&#xff1a;是因为torch和python版本不对应 3.解决方案&#xff1a; 重新安装torch&a…

vue基础语法

指令修饰符 如果想了解keycode&#xff0c;可以查看keycode对照表&#xff0c;如下图&#xff08;部分&#xff09;: 阻止冒泡事件名.stop 父div包裹子div&#xff0c;如果点击子div&#xff0c;会触发父div。 如果想只显示子div的事件&#xff0c;那么可以改子div的内容 cli…

【论文分享精炼版】 sNPU: Trusted Execution Environments on Integrated NPUs

今天在COMPASS分享了之前写的一个博客&#xff0c;做了进一步的提炼总结&#xff0c;大家可以看看原文~ 今天分享的论文《sNPU: Trusted Execution Environments on Integrated NPUs》来自2024年ISCA&#xff0c;共同一作为Erhu Feng以及Dahu Feng。并且&#xff0c; 这两位作…

Windows Home版本实现远程桌面——RDP Wrapper,及由于更新导致不可用的解决方法:以win11 22631.3593为例

一、RDP Wrapper工作机制 根据rdpwap.ini文件调用相应windows版本的termsrv.dll. 实用的命令&#xff1a; > net stat -au | findstr 3389 ; 查看端口是否启动 > net stop termservice ; 停止远程桌面 > net start termservice; > mstsc > 二、问题解决 注意查…

93. UE5 GAS RPG 应用负面效果表现

在上一篇文章里&#xff0c;我们实现了添加负面效果GE&#xff0c;并且在添加GE时&#xff0c;也会给角色应用一个负面效果标签作为标识。在这一篇里&#xff0c;我们将通过负面效果标签标识&#xff0c;应用角色身上展现对应的负面效果的表现。 我们将在这篇文章里添加一个自定…

leetcode:2710. 移除字符串中的尾随零(python3解法)

难度&#xff1a;简单 给你一个用字符串表示的正整数 num &#xff0c;请你以字符串形式返回不含尾随零的整数 num 。 示例 1&#xff1a; 输入&#xff1a;num "51230100" 输出&#xff1a;"512301" 解释&#xff1a;整数 "51230100" 有 2 个尾…

vmware 17.6 pro for personal USE初体验

新学期开学了&#xff0c;暑假期间把台式机放在办公室远程&#xff0c;无赖期间经常断电&#xff0c;把我的老台给烧坏了&#xff0c;检测了下固态硬盘和机械硬盘&#xff0c;好歹能用。但是win11的系统奔溃了。就花了半天时间重装。*v* 悲剧的是&#xff0c;一些软件环境必须…

javaWeb【day04】--(MavenSpringBootWeb入门)

01. Maven课程介绍 1.1 课程安排 学习完前端Web开发技术后&#xff0c;我们即将开始学习后端Web开发技术。做为一名Java开发工程师&#xff0c;后端Web开发技术是我们学习的重点。 1.2 初识Maven 1.2.1 什么是Maven Maven是Apache旗下的一个开源项目&#xff0c;是一款用于…

python进阶篇-day09-数据结构与算法(非线性结构与排序算法)

非线性结构(树状结构) 特点: 每个节点都可以有n个子节点(后继节点) 和 n个父节点(前驱节点) 代表: 树, 图...... 概述 属于数据结构之 非线性结构的一种, 父节点可以有多个子节点(后续节点) 特点 有且只有1个根节点 每个节点都可以有1个父节点及任意个子节点, 前提: 根节点除…

C++竞赛初阶L1-15-第六单元-多维数组(34~35课)551: T456501 计算矩阵边缘元素之和

题目内容 输入一个整数矩阵&#xff0c;计算位于矩阵边缘的元素之和。 所谓矩阵边缘的元素&#xff0c;就是第一行和最后一行的元素以及第一列和最后一列的元素。 输入格式 第 1 行包含两个整数&#xff0c;分别为行数 m 和列数 n&#xff0c;两个整数之间空格隔开。 第 2 …