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

博主采用的是SpringBoot3+knife4j的框架,如果你采用的是SpringBoot2框架,那么可以看下面这几篇:

Knife4j文档请求异常 | Knife4j

记一次集成swagger2(Knife4j)在线文档异常,提示:Knude4j文档请求异常_knife4j文档请求异常-CSDN博客全网多种方式解决Knife4j文档请求异常-CSDN博客


博主最近做苍穹外卖时碰到了一个问题,Knife4j文档请求异常,如下图所示:

于是F12打开控制台准备进行debug,发现报出如下错误:

大致意思是JSON返回了一个token,继续从网络的响应查找:

发现响应码(200)正常,并且返回格式为json,查看响应内容:

居然是一长串字符串,而不是Json数据。于是到了最令人烦躁的debug环节,从编辑器控制台查看没有任何ERROR甚至WARN信息:

2024-01-09T15:17:43.508+08:00 INFO 22868 --- [ main] com.sky.SkyApplication : Starting SkyApplication using Java 17.0.8 with PID 22868 (E:Codesky_take_out_projsky_take_outsky_server argetclasses started by User in E:Codesky_take_out_projsky_take_out) 2024-01-09T15:17:43.510+08:00 INFO 22868 --- [ main] com.sky.SkyApplication : The following 1 profile is active: "dev" 2024-01-09T15:17:44.228+08:00 INFO 22868 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode 2024-01-09T15:17:44.230+08:00 INFO 22868 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data Redis repositories in DEFAULT mode. 2024-01-09T15:17:44.265+08:00 INFO 22868 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 23 ms. Found 0 Redis repository interfaces. 2024-01-09T15:17:44.830+08:00 INFO 22868 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http) 2024-01-09T15:17:44.837+08:00 INFO 22868 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat] 2024-01-09T15:17:44.837+08:00 INFO 22868 --- [ main] o.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/10.1.16] 2024-01-09T15:17:44.920+08:00 INFO 22868 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext 2024-01-09T15:17:44.920+08:00 INFO 22868 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 1369 ms Standard Commons Logging discovery in action with spring-jcl: please remove commons-logging.jar from classpath in order to avoid potential conflicts 2024-01-09T15:17:45.242+08:00 INFO 22868 --- [ main] com.sky.config.WebMvcConfiguration : 开始注册自定义拦截器... 2024-01-09T15:17:45.908+08:00 INFO 22868 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path '' 2024-01-09T15:17:45.917+08:00 INFO 22868 --- [ main] com.sky.SkyApplication : Started SkyApplication in 3.027 seconds (process running for 3.722) 2024-01-09T15:17:45.919+08:00 INFO 22868 --- [ main] com.sky.SkyApplication : server started 2024-01-09T15:19:13.412+08:00 INFO 22868 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet' 2024-01-09T15:19:13.413+08:00 INFO 22868 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet' 2024-01-09T15:19:13.414+08:00 INFO 22868 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 1 ms 2024-01-09T15:19:14.040+08:00 INFO 22868 --- [nio-8080-exec-6] o.springdoc.api.AbstractOpenApiResource : Init duration for springdoc-openapi is: 261 ms

突然想起来之前设置过一个消息转换器,将Date类型转换为yyyy-MM-dd HH:mm格式去显示,于是考虑是否因为消息转换器,将JSON数据不正常解析了?

/** * 扩展消息转换器,将日期类型从列表转换为时间戳 * @param converters 消息转换器列表 */ @Override protected void extendMessageConverters(List<HttpMessageConverter<?>> converters) { MappingJackson2HttpMessageConverter jackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter(); jackson2HttpMessageConverter.setObjectMapper(new JacksonObjectMapper()); converters.add(0,jackson2HttpMessageConverter); }

于是将消息转换器注释掉,便正常显示了:

返回的JSON数据也正常了,代价是后端返回的时间数据不是上面提到的格式,而是列表,导致前端显示错误的格式:

至此


如果你还想保留消息转换器,让后端返回正确的时间数据格式,那么可以调整消息转换器列表中转换器的顺序,代码如下。

/** * 扩展消息转换器,将日期类型从列表转换为时间戳 * 这个是导致knife4j不能正常显示的罪魁祸首,特别要注意添加的位置 * @param converters 消息转换器列表 */ @Override protected void extendMessageConverters(List<HttpMessageConverter<?>> converters) { MappingJackson2HttpMessageConverter jackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter(); jackson2HttpMessageConverter.setObjectMapper(new JacksonObjectMapper()); converters.add(converters.size()-1,jackson2HttpMessageConverter); }

一些参考文章:

MappingJackson2HttpMessageConverter使用及jackson配置原理和避坑说明-CSDN博客

一步到位 SpringBoot 序列化与消息转换器 (你需要的这里都有)_springboot 序列化 自定义转换器-CSDN博客

为什么说HttpMessageConverter的顺序非常重要_SpringBoot?

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

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

相关文章

从执行到管理:SOP思维,是你必须掌握的职场杠杆

我成为管理者后的最大收获,是发现了一个职场真相:高效团队不是靠超人,而是靠可复制的方法。 曾经带过一名非常优秀的员工小陈,她解决问题总是一针见血,工作效率是别人的两倍。当她提出离职时,我焦虑了整整一周——很多关键任务只有她最清楚。也正是这次危机,让我彻底明…

Kafka 基础概念

Kafka 基础概念 Kafka 是什么&#xff1f; 分布式流处理平台&#xff0c;专为高吞吐量、低延迟的实时数据流设计。核心功能包括发布-订阅消息系统、持久化存储和流式处理。 核心组件 Topic&#xff1a;消息的逻辑分类&#xff0c;类似数据库表。Partition&#xff1a;Topic 的物…

【毕业设计】机器学习基于python深度学习的苹果和西红柿识别

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

knife4j+springboot3.4异常无法正确展示文档

场景复现&#xff1a; knife4j-openapi3-jakarta-spring-boot-starter版本 com.github.xiaoymin knife4j-openapi3-jakarta-spring-boot-starter 4.5.0 原来使用springboot3.3.5版本&#xff0c;先升级到3.4.0版本 通过http://ip:port/doc.html访问接口文档发现访问/v3/api-d…

深度学习计算机毕设之基于深度学习的土豆疾病识别卷神经网络

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

LangChain-09 Query SQL DB With RUN GPT 查询数据库 并 执行SQL 返回结果

安装依赖 pip install --upgrade --quiet langchain-core langchain-community langchain-openai编写代码 from langchain_core.prompts import ChatPromptTemplate from langchain_community.utilities import SQLDatabase from langchain_core.output_parsers import StrOut…

Python高效计算斐波那契数列

实现功能&#xff1a;计算斐波那契数列的第n项以下是用 Python 编写的递归方法实现斐波那契数列&#xff1a;def fibonacci(n):if n < 0:return "输入必须为正整数"elif n 1:return 0elif n 2:return 1else:return fibonacci(n - 1) fibonacci(n - 2)# 示例调用…

AWS OpenSearch Service TLS 策略升级指南

📋 概述 AWS OpenSearch Service 将于 2026 年 4 月 20 日停止支持 TLS 1.0 和 1.1 版本。本文详细介绍如何安全地将 OpenSearch 域的 TLS 策略升级到 TLS 1.2,确保服务的持续可用性和安全性。 🚨 重要通知 截止日期: 2026 年 4 月 20 日 影响: 使用 TLS 1.0/1.1 的域将…

深度学习毕设项目:基于人工智能深度学习的土豆疾病识别

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

LangChain-08 Query SQL DB 通过GPT自动查询SQL

我们需要下载一个 LangChain 官方提供的本地小数据库。 安装依赖 SQL: https://raw.githubusercontent.com/lerocha/chinook-database/master/ChinookDatabase/DataSources/Chinook_Sqlite.sql Shell: pip install --upgrade --quiet langchain-core langchain-community lang…

使用dify搭建爬虫Agent工作流

最近用Dify做了一个工作流应用&#xff0c;可以实现自动化采集亚马逊商品信息&#xff0c;包括名称、价格、折扣、评分、评论等关键字段&#xff0c;然后使用DeepSeek对商品竞争力、价格、用户口碑进行分析&#xff0c;为跨境卖家提供一份完整的分析报告。 整个工作流搭建用到了…

【课程设计/毕业设计】基于深度学习机器学习的土豆疾病识别

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

内驱力:点燃自我成长的发动机

你是否曾有过这样的经历:被外在压力推着走时倍感疲惫,而发自内心想要做一件事时却充满能量?这背后起作用的就是内驱力——那个无需外力推动、却能让每个人持续前进的内心发动机。 内驱力是什么? 内驱力是一种源自内心的动力,它让我们主动追求成长、学习和进步。与外部的…

Katalon平台的集成生态

在现代软件开发中&#xff0c;任何工具都难以孤立地发挥作用。一个工具的价值&#xff0c;往往与其融入现有技术生态的能力息息相关。Katalon平台深谙此道&#xff0c;构建了一个极其广泛的集成网络&#xff0c;使其不仅能作为强大的自动化测试工具独立运作&#xff0c;更能成为…

Python代码实现示例解析

代码实现 以下是一个实现[输入代码要求]的[输入编程语言]代码示例&#xff1a; def example_function(input_data):"""示例函数&#xff1a;实现[输入代码要求]参数&#xff1a;input_data: 输入数据返回&#xff1a;处理后的结果"""# 初始化结…

深度学习毕设项目:基于python深度学习的苹果和西红柿识别

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

新手进阶Python:给办公助手加定时功能,自动处理任务不用盯

大家好&#xff01;我是CSDN的Python新手博主&#xff5e; 上一篇我们整合了Excel、Word、PDF、OCR的全能办公助手&#xff0c;很多小伙伴反馈“如果能定时自动运行就好了&#xff0c;比如每天早上8点自动处理Excel数据、生成报表并发送给领导&#xff0c;不用我手动点”。今天…

FastAPI 极简教程1

FastAPI 极简教程 文章目录 FastAPI 极简教程 一 环境准备与安装 二 最小可用示例 三 核心概念速览 **四 项目结构与路由拆分** 五 运行与部署要点 🚀 FastAPI 极简教程 (10-50行代码) 0️⃣ 1分钟搞定 步骤 一 环境准备与安装 使用 Python 3.8+,建议搭配虚拟环境(venv)隔…

计及电转气协同的含碳捕集与垃圾焚烧虚拟电厂优化调度Matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。&#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室&#x1f447; 关注我领取海量matlab电子书和数学建模资料 &#x1f34…

数据科学为大数据领域的业务增长赋能

数据科学为大数据领域的业务增长赋能 关键词:数据科学、大数据、业务增长、机器学习、数据分析、数据挖掘、商业智能 摘要:本文探讨了数据科学如何在大数据时代为企业业务增长提供强大动力。我们将从基础概念入手,分析数据科学的核心技术栈,展示实际应用案例,并展望未来发…