【问题解决】Postman 测试报错 406

现象

Tomcat 日志

org.springframework.web.servlet.handler.AbstractHandlerExceptionResolver.logException Resolved org.springframework.web.HttpMediaTypeNotAcceptableException: No acceptable representation

HTTP状态 406 - 不可接收 的报错,核心原因

客户端的请求头 Accept 无法匹配服务端可返回的数据类型(例如 JSON),导致 SpringMVC 无法找到合适的表示(representation)返回

🎯 关键问题分析

原始接口:

java 复制代码
@GetMapping("/save")
@ResponseBody
public String save() {
    return "{'info': 'springmvc'}";
}

问题原因:

  1. @ResponseBody + String 返回 JSON 字符串 ,但 SpringMVC 认为它是 text/plain 类型;
  2. 如果 Postman 的 Accept 请求头为 application/json,SpringMVC 会尝试返回 JSON;
  3. 结果不匹配,服务端无法满足客户端请求的数据格式要求,返回 406

🛠️ 解决方案一:改返回类型 + 自动 JSON 转换

修改返回类型为 Map 或 Java 对象,SpringMVC 会自动将其序列化为 JSON(需引入 Jackson)

修改示例:

java 复制代码
@GetMapping("/save")
@ResponseBody
public Map<String, String> save() {
    Map<String, String> map = new HashMap<>();
    map.put("info", "springmvc");
    return map;
}

Maven 依赖 Jackson(Spring6 通常自动包含):

xml 复制代码
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.18.2</version>
</dependency>

🛠️ 解决方案二:Postman 设置 Accepttext/plain

如果不修改接口代码,仍返回字符串 "{}",则 Postman 需要这样设置:

  1. 在 Headers 中添加:

    vbscript 复制代码
    Accept: text/plain
  2. 或删除 Accept 头,让它使用默认(*/*);


🛠️ 解决方案三:显式指定返回类型为 JSON

java 复制代码
@GetMapping(value = "/save", produces = "application/json;charset=UTF-8")
@ResponseBody
public String save() {
    return "{\"info\": \"springmvc\"}";
}

这样 Spring 会将字符串当成 JSON 返回,避免 406


🧩 总结

方案 优点 注意
返回对象(Map/类) 推荐,Spring自动 JSON 需 Jackson 依赖
改 Accept 头 快速,适合测试 返回非标准 JSON
指定 produces 控制精确 手写 JSON 且需转义
相关推荐
猫猫的小茶馆几秒前
【STM32】FreeRTOS 任务的删除(三)
java·linux·stm32·单片机·嵌入式硬件·mcu·51单片机
天天摸鱼的java工程师5 分钟前
🔧 MySQL 索引的设计原则有哪些?【原理 + 业务场景实战】
java·后端·面试
空影学Java23 分钟前
Day44 Java数组08 冒泡排序
java
追风少年浪子彦1 小时前
mybatis-plus实体类主键生成策略
java·数据库·spring·mybatis·mybatis-plus
创码小奇客1 小时前
Talos 使用全攻略:从基础到高阶,常见问题一网打尽
java·后端·架构
jackzhuoa2 小时前
java小白闯关记第一天(两个数相加)
java·算法·蓝桥杯·期末
Rover.x2 小时前
内存泄漏问题排查
java·linux·服务器·缓存
midsummer_woo2 小时前
基于spring boot的纺织品企业财务管理系统(源码+论文)
java·spring boot·后端
zc-code2 小时前
Spring Boot + @RefreshScope:动态刷新配置的终极指南
java·spring boot·后端
何中应2 小时前
EasyExcel使用(二:写出)
java·后端·maven·excel