HttpMediaTypeNotAcceptableException报错解决,状态码显示为406

当返回类没有添加 gettersetter 方法时出现 HTTP 406 错误(Not Acceptable),主要与 Spring 框架处理响应数据的机制以及消息转换器的工作原理有关
(注意前提,你已经添加了json相关库的依赖)

消息转换器的工作原理

在 Spring 框架中,当控制器方法返回一个对象时,Spring 会使用消息转换器(Message Converter)将该对象转换为客户端可接受的媒体类型(如 JSON、XML 等)。以常见的 JSON 格式为例,Spring 通常使用 Jackson 库来完成对象到 JSON 的转换。

缺少 gettersetter 方法导致的问题

1. 对象属性无法访问

Jackson 在将 Java 对象转换为 JSON 字符串时,依赖于对象的 getter 方法来获取对象的属性值。如果返回类没有提供 getter 方法,Jackson 就无法访问对象的属性,也就无法将这些属性转换为 JSON 格式的键值对。

例如,有一个简单的 User 类:

public class User {private String name;private int age;// 没有提供 getter 和 setter 方法
}

当控制器方法返回 User 对象时,Jackson 无法获取 nameage 属性的值,就无法生成有效的 JSON 响应。

2. 消息转换器无法处理

由于消息转换器无法将对象正确转换为客户端期望的媒体类型,服务器就无法提供符合客户端 Accept 头要求的响应。客户端请求的媒体类型(如 application/json)在服务器端无法得到正确的表示,从而触发 HttpMediaTypeNotAcceptableException 异常,返回 HTTP 406 错误。

解决办法

为返回类添加 gettersetter 方法,以便消息转换器能够正常访问和处理对象的属性。修改后的 User 类如下:

public class User {private String name;private int age;// 提供 getter 方法public String getName() {return name;}public int getAge() {return age;}// 提供 setter 方法public void setName(String name) {this.name = name;}public void setAge(int age) {this.age = age;}
}

这样,当控制器方法返回 User 对象时,Jackson 可以通过 getter 方法获取属性值,并将其转换为 JSON 格式的响应,避免了 HTTP 406 错误。

此外,如果你使用的是 Lombok 库,可以通过添加 @Getter@Setter 注解来自动生成 gettersetter 方法,简化代码:

import lombok.Getter;
import lombok.Setter;@Getter
@Setter
public class User {private String name;private int age;
}

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

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

相关文章

DETR详解

1.概述 DETR,全称为Detection Transformer,是Facebook在ECCV2020上提出的基于Transformer的端到端目标检测网络最大的特点就是:不需要预定义的先验anchor,也不需要NMS的后处理策略,就可以实现端到端的目标检测。但是&…

南昌长空STONE 60A-M 无人机电调深度测评:轻量化设计与工业级安全的融合典范

引言 在无人机技术不断革新的今天,电调作为动力系统的核心组件,其性能直接影响飞行稳定性与操控体验。STONE 系列凭借 “轻量化设计” 理念,在竞争激烈的市场中独树一帜。本文将深度解析 STONE 60A-M 电调的技术亮点与实际表现,探…

初阶数据结构(C语言实现)——4.2队列

目录 2.队列2.1队列的概念及结构2.2队列的实现2.2.1 初始化队列2.2.2 销毁队列2.2.3 队尾入队列2.2.4 队头出队列2.2.5获取队列头部元素2.2.6 获取队列队尾元素2.2.7获取队列中有效元素个数2.2.8 检测队列是否为空,如果为空返回非零结果,如果非空返回0 3…

C++和OpenGL实现3D游戏编程【连载24】——父物体和子物体之间的坐标转换

欢迎来到zhooyu的C++和OpenGL游戏专栏,专栏连载的所有精彩内容目录详见下边链接: 🔥C++和OpenGL实现3D游戏编程【总览】 父子物体的坐标转换 1、本节要实现的内容 前面章节我们了解了父物体与子物体的结构,它不仅能够表示物体之间的层次关系,更重要的一个作用就是展示物…

怎么实现: 大语言模型微调案例

怎么实现: 大语言模型微调案例 目录 怎么实现: 大语言模型微调案例输入一个反常识的问题:首都在北京天安门之后对输出模型进行测试:首都在北京天安门微调代码:测试微调模型代码:微调输出模型结构输出模型参数大小对比Qwen 2.5_0.5:53MB输出模型:951MB 是一样的,没有进行…

知乎后台管理系统:数据库系统原理实验1——数据库基础概念

实验背景 通过练习绘制语义网络,加深对于基本概念之间关系的理解和掌握。掌握在VISIO中绘制能准确表达基本概念之间关系的语义网络的技能。了解并比较数据模型的Chen’s表示法和UML表示法。理解关系模型设计中的完整性约束的重要性。掌握在Linux操作系统下远程访问…

超过 37000 台 VMwareESXi 服务器可能受到持续攻击威胁

近日,威胁监测平台影子服务器基金会(The Shadowserver Foundation)发布报告,指出超 3.7 万个互联网暴露的威睿(VMware)ESXi 实例存在严重安全隐患,极易受到 CVE-2025-22224 漏洞的攻击。该漏洞属…

Linux《基础开发工具(中)》

在之前的Linux《基础开发工具(上)》当中已经了解了Linux当中到的两大基础的开发工具yum与vim;了解了在Linux当中如何进行软件的下载以及实现的基本原理、知道了编辑器vim的基本使用方式,那么接下来在本篇当中将接下去继续来了解另…

Vue3 Pinia 符合直觉的Vue.js状态管理库

Pinia 符合直觉的Vue.js状态管理库 什么时候使用Pinia 当两个关系非常远的组件,要传递参数时使用Pinia组件的公共参数使用Pinia

知识库Dify和cherry无法解析影印pdf word解决方案

近期收到大量读者反馈:上传pdf/图文PDF到Dify、Cherry Studio等知识库时,普遍存在格式错乱、图片丢失、表格失效三大痛点。 在试用的几款知识库中除了ragflow具备图片解析的能力外,其他的都只能解析文本。 如果想要解析扫描件&#xff0c…

Webservice创建

Webservice创建 服务端创建 3层架构 service注解(commom模块) serviceimpl(server) 服务端拦截器的编写 客户端拦截器 客户端调用服务端(CXF代理) 客户端调用服务端(动态模式调用&a…

腾讯云低代码开发应用

创建客户端应用 如上所示,登录腾讯云微搭低代码业务控制台,开始搭建企业官网应用 如上所示,在腾讯云微搭低代码业务控制台中,开始创建企业官网应用 如上所示,在腾讯云微搭低代码业务控制台中,开始编辑企业官…

【Java开发指南 | 第三十四篇】IDEA没有Java Enterprise——解决方法

读者可订阅专栏:Java开发指南 |【CSDN秋说】 文章目录 1、新建Java项目2、单击项目名,并连续按两次shift键3、在搜索栏搜索"添加框架支持"4、勾选Web应用程序5、最终界面6、添加Tomcat 1、新建Java项目 2、单击项目名,并连续按两次…

深度学习原理与Pytorch实战

深度学习原理与Pytorch实战 第2版 强化学习人工智能神经网络书籍 python动手学深度学习框架书 TransformerBERT图神经网络: 技术讲解 编辑推荐 1.基于PyTorch新版本,涵盖深度学习基础知识和前沿技术,由浅入深,通俗易懂&#xf…

uniapp项目运行失败Error: getaddrinfo *.bspapp.com 文件查找失败uview-ui及推荐MarkDown软件 Typora

一、uniapp项目运行失败Error: getaddrinfo *.bspapp.com 文件查找失败uview-ui 在运行一个uniapp项目时,出现报错 文件查找失败:uview-ui,Error: getaddrinfo ENOTFOUND 960c0a.bspapp.com。hostname异常,报错的详细信息如下&…

什么是vue的keep-alive?它是如何实现的?具体缓存了什么内容?

文章目录 一、keep-alive 的核心作用二、实现原理1. 缓存管理策略2. 核心源码解析(Vue 2.x 简化版)3. 缓存生命周期 三、缓存的具体内容1. 缓存对象结构2. 具体缓存内容 四、使用示例1. 基础用法2. 配置缓存策略 五、注意事项六、实现流程图解 Vue 的 k…

pytest基础知识

pytest知识了解 pytest的基础知识了解:Python测试框架之pytest详解_lovedingd的博客-CSDN博客_pytest框架 (包含设置断点,pdb,获取最慢的10个用例的执行耗时) pytest-pytest.main()运行测试用例,pytest参数: pytest-…

Liunx(CentOS-6-x86_64)使用Nginx部署Vue项目

一:编译vue项目和上传到linux系统 通过本地编译器编译后的文件 上传服务器后的 二:安装 node(版本 v16.20.2)和npm( 8.19.4或 9.6.5) 备注一:安装nodejs就是安装node和npm, su…

分布式锁—Redisson的同步器组件

1.Redisson的分布式锁简单总结 Redisson分布式锁包括:可重入锁、公平锁、联锁、红锁、读写锁。 (1)可重入锁RedissonLock 非公平锁,最基础的分布式锁,最常用的锁。 (2)公平锁RedissonFairLock 各个客户端尝试获取锁时会排队,按照队…

2025年渗透测试面试题总结-字某某动-安全研究实习生(一面)(题目+回答)

网络安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 字某某动-安全研究实习生(一面) 一、岗位认知与方向选择 1. 对公司业务的理解 …