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

Springboot3.5+ Knife4j4.5.0集成文档请求异常 Spring Boot 3.5.5集成Knife4j 4.5.0时出现NoSuchMethodError异常,原因是引入的springdoc-openapi版本过低不兼容。解决方案:排除低版本依赖后手动引入springdoc-openapi-starter-webmvc-ui 2.8.13,并将knife4j.enable设为false。此问题反映了Knife4j版本更新较慢导致的新版兼容性问题,通过排除依赖并升级关联组件版本可解决。完整配置调整后系统可正常运行。 阅读详情
AI摘要

本文记录了一次knife4j文档请求异常的定位与解决过程。开发新接口后,knife4j页面报错。经排查,排除依赖升级问题,定位到具体接口。最终发现是其他同事添加描述时,未对string类型添加双引号包裹,导致页面加载解析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]'")
    @NotEmpty
    private List<String> domainList;
    ......
}

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

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

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

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

总结:

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

Knife4j文档请求异常报错,页面无效 首先我配置全部正确, 可是一打开发现就出现 后来发现是因为我配置了统一token校验,而拦截器把swagger给拦截了 所以我们只需要在注册生效的拦截器中加入对swagger的判定和放行就可以了 //判断是不是swagger是就放行 HandlerMethod handlerMethod=(HandlerMethod)handler; if("springfox.documentation.swagger.web.ApiResourceController".equals 阅读详情

相关推荐

SpringBoot3升级后Knife4j文档加载问题解决方案

在微服务架构中,API文档工具是开发调试的重要基础设施。Swagger作为行业标准规范,通过OpenAPI定义RESTful接口的结构描述。Knife4j作为Swagger的增强实现,提供了更友好的UI界面和调试功能。当SpringBoot从2.x升级到3.x时,由于Jakarta EE命名空间的变更和Spring Security的配置调整,会导致Knife4j文档无法正常加载。本文针对典型的'Knife4j is not valid JSON'错误,从依赖管理、安全配置、静态资源处理三个维度,详细分析S

weixin_28717431的博客 290

Knife4j文档请求异常(基于SpringBoot3,查找原因并解决)

居然是一长串字符串,而不是Json数据。

nofaliure的博客 1万+

全网多种方式解决Knife4j文档请求异常

全网多种方式解决Knife4j文档请求异常。

念兮为美 1万+

关于Knife4j文档请求异常解决方法

swagger接口文件异常 Knife4j异常处理

weixin_60130631的博客 8108

Claude + Figma MCP 实战教程

• 拥有 Figma 的 Dev 或 Full seat(专业/企业账号)权限 才能启用 Dev-Mode MCP 服务 。• MCP 是通过标准接口连接 Claude 与 Figma,效率高,但目前仍为 Beta,稳定性可能有限。3. 服务启动后,会在本地运行,比如 http://127.0.0.1:3845/mcp 。如果设置正确,会显示已连接的 figma-dev-mode-mcp-server  。• 如果多次转换复杂组件,可能需要多次选择与多次生成,建议合理拆分设计任务。

weixin_49869937的博客 4445

八大排序算法——(万字图文详解)

本篇博客将对“直接插入排序”、“希尔排序”、“直接选择排序”、“堆排序”、“冒泡排序”、“快速排序”、“归并排序”、“计数排序”进行详细的解析(算法逻辑、具体实现过程、时间复杂度、稳定性),并附以图片帮助大家更好地理解算法逻辑以及实现每个排序的参考代码。

Forward♞的博客 8074

记一次使用gateway和knife4j生成聚合文档请求异常 SyntaxError: Unexpected token ‘<‘, ... is not valid JSON

knife聚合文档访问异常

2202_75372744的博客 724

基于因果推理的LLM去毒:精准定位注意力头实现高效干预

在大型语言模型(LLM)的部署与应用中,模型安全与可控性是核心挑战之一。传统方法如全参数微调成本高昂,且可能损害模型通用能力。本文聚焦于一种基于因果推理的精准干预技术,其原理在于利用因果发现算法定位Transformer模型中与“毒性”输出存在强因果关联的特定注意力头。该技术通过分析注意力头的激活模式与生成文本毒性分数之间的因果关系,识别出关键责任单元,而非依赖传统的相关性分析。其技术价值在于实现了轻量级、高可解释性的模型行为修正,能以极低的参数改动代价有效降低模型在敏感话题上的有害输出。在应用场景上,该方

weixin_32667439的博客 311

Gateway网关下Knife4j文档聚合,报错:SyntaxError Unexpected token ‘‘, !DOCTYPE ... is not valid JSON

Gateway网关下Knife4j文档聚合,报错:SyntaxError: Unexpected token '<', "<!DOCTYPE "... is not valid JSON

weixin_74583509的博客 1596

保姆级教程:用掘金量化API手把手复现一个年化17%的网格交易策略(附完整Python代码)

本文提供了一份详细的掘金量化API教程,手把手教你构建一个年化17%的网格交易策略。通过完整的Python代码实现,深入解析网格交易的核心逻辑、参数配置和动态调仓机制,帮助量化新手快速掌握策略开发全流程。教程包含环境配置、代码实现、回测分析和常见问题解答,是学习量化投资的实用指南。

weixin_33709364的博客 295

C语言的文件读取与写入操作

学了一年的C语言了,现在回过头来做一下总结。并且博客开了挺长一段时间却没有谢什么实际的东西。现在做下总结,对之后的学习帮助应该挺大的。与大家共勉! 现在,我先来介绍一下C语言的文件读取与写入的原理和具体操作方法。 C语言文件读取与写入是通过将文件看成一个字符序列进行读入和写出的。所以读取与写入文件就用到了指针,而这个指针是一个特殊的指针,我们称为文件指针。 指针名称是

wzyxdwll的博客 3万+

记录一次Knife4j的出错:“‘<‘, “<!doctype “... is not valid”

在启动服务类之后,打开页面显示以及我一开始使用的是edge浏览器,尝试了很多方法,包括knife4j的版本问题,全局拦截器发现都无法改变错误。

mar1111s的博客 627

基于WEB的报价管理系统的设计与实现

该系统采用B/S模式,后台运用SpringMVC和MyBatis搭建,利用MySQL数据库,来组织存储和管理数据,使用tomcat服务器向外提供服务。使用该系统对外有利于提高企业的综合竞争力,对内有利于提高成本管理和控制的水平,简化了报价流程、提高了工作效率、精简了报价机构,降低了成本。研究和掌握必要的信息采集和数据查询技术,是各个企业,事业单位信息化的一个重要标志。当前大多数企业采取的报价方式仍然是用EXCEL表格和人工的方式,这不仅不利于大量数据的总结,更不利于对销售利润的控制。

m0_60918862的博客 999

Knife4j文档请求异常

【问题描述】如下图,使用Knife4j生成API接口文档时,前台提示Knife4j文档请求异常 【解决方案】 分析原因打开F12,发现请求接口404未找到异常 找到后台对应业务的启动类,加上@EnableSwagger2WebMvc注解(如下图),重启即可解决 【修复效果】 我是李斯特,内容如果对你有帮助,请点赞支持一下。 ...

李斯特的博客 3万+

kali2020.2安装出现的问题并附详细解决办法

kali2020.2的安装

weixin_48776804的博客 3047

IEC 104电力规约详细解读(五) - 遥控

主站下发遥控选择命令,子站进行遥控选择返校,若成功则回答遥控选择成功报文,若失败则回答失败报文。主站下发取消遥控命令或者遥控执行命令行。子站皆以报文的镜像确认。遥控命令用来实现对一个可操作设备状态的改变。在配电自动化中,包括单点命令和双点命令。通常,单点命令用于控制单点信息对象;双点命令用于控制双点信息对象。

张二狗的博客 7347

SpringBoot拦截器全局拦截登陆当集成knife4j遇到的“Knife4j文档请求异常问题”

SpringBoot拦截器全局拦截登陆当集成knife4j遇到的“Knife4j文档请求异常问题”问题解决方案拦截器配置文件里配置不拦截静态资源登录拦截器详细配置除此之外可能还有别的原因 问题 集成knife4j后,无法访问api文档。 解决方案 拦截器配置文件里配置不拦截静态资源 因为swagger的页面都属于静态资源,需要在拦截器里排除掉。 package com.minglei.hotnews.config; import org.springframework.beans.factory.ann

薛定谔的英短的博客 1万+

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Knife4j文档请求异常错误

springboot项目配置Knife4j后,访问地址http://xxxx/doc.html出现错误:Knife4j文档请求异常错误。

晓风残月龙 4653

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

hibernate的validate注解异常在不同版本下的全局捕获方式

在最开始的时候,web项目中接口的第一步几乎都是判断参数的合法性,例如值是否为null等等。因为有guava的工具包,刚开始手写校验参数还OK,例如: if (StringUtils.isBlank(name)) { return "name不能为空"; } 随着项目功能接口变多,这种写法越来越麻烦;hibernate出了一种注解,可以很方便...

风雨诗轩的博客 1453

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

knife4j遇到“knife4j文档请求异常”及空指针问题

Knife4j使用时遇到“knife4j文档请求异常”及空指针问题解决方案

qq_74804896的博客 2849

Knife4j 文档请求异常

重点是:converters.add(1, converter);原来是converters.add(0, converter);转化能生效,文档报错。改为1也能转化成功文档也能用。升级springboot3 、Knife4j4.5.0。加了那个转换器就报错。

lanyanhua的博客 1347

苍穹外卖报错-Knife4j文档请求异常解决方式【一篇搞定】

Knife4j 作为一款基于 Swagger 的增强工具,在 API 开发、文档管理和团队协作中展现出显著优势。1. 界面交互与用户体验优化Knife4j 对原生 Swagger UI 进行了深度重构,采用响应式布局和现代化设计,支持深色模式和动态加载,提升开发者使用舒适度。分栏式导航结构实现 API 分类与接口详情的实时联动,结合智能搜索和书签功能,大幅缩短接口定位时间。内置的接口测试模块支持参数自动填充、请求头管理和响应结果高亮展示,减少测试工具切换频率,提高调试效率。2. 自动化文档生成与维护。

潜意识Java的博客 3828

Knife4j文档请求异常:TypeError: n.forEach is not a function

Knife4j文档请求异常:TypeError:n.forEach is not a function

fyk的博客 6883

knife4j文档请求异常

knif4j页面请求异常

weixin_47036562的博客 1435
上一篇: lucene学习-FST源码分析
下一篇: lucene数据写入-01写入流程
胖柯G
博客等级 码龄10年 453粉丝 57原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值