You need to enable JavaScript to run this app. Spring Boot非根路由返回404 根路由访问报内容类型不支持问题
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot非根路由返回404 根路由访问报内容类型不支持问题

问题1:向"/families"路由发送GET请求返回404

根因

  • 你当前FamilyController类上的@RequestMapping注解仅配置了consumes、produces属性,未指定路由前缀,所以该Controller下接口的根路径默认是/,而非你预期的/families,请求路径无法匹配自然返回404。
  • 补充确认:你的启动类在com.example包下,Controller处于com.example.controller子包中,Spring Boot默认组件扫描规则可以正常识别该Controller,不存在组件未注册的问题。

解决方案

修改类上的@RequestMapping注解,添加path属性指定路由前缀:

@RestController
@RequestMapping(path = "/families", consumes = "application/json", produces = "application/json")
public class FamilyController {
    // 其余原有代码保持不变
}

修改后getFamily方法的路由就是GET /families,即可正常匹配请求。

问题2:路由改为"/"后返回Content type '' not supported错误

根因

@RequestMapping的consumes属性作用是限定只有请求的Content-Type头符合指定值时,才会匹配该路由。你配置了consumes = "application/json",要求所有请求必须携带Content-Type: application/json头,但GET请求通常没有请求体,绝大多数客户端发送GET请求时默认不会携带Content-Type头,导致请求头中该字段为空,匹配失败返回错误。

解决方案

GET请求不需要消费请求体,无需配置consumes属性,推荐选择以下两种修改方式:

  1. 移除类上@RequestMapping的consumes配置(最符合REST规范):
@RestController
@RequestMapping(path = "/families", produces = "application/json")
public class FamilyController {
    // 其余原有代码保持不变
}
  1. 如果你需要保留类全局的consumes配置,可以单独在GET方法上覆盖该配置:
@GetMapping(path = "/", consumes = "*/*")
public String getFamily(){
    // 其余原有代码保持不变
}

如果是本地测试验证,也可以在发送GET请求时手动添加Content-Type: application/json请求头,即可正常请求。

内容的提问来源于stack exchange,提问作者tгue_cookie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.12 22:45:03