异常描述
org.springframework.web.HttpMediaTypeNotAcceptableException: Could not find acceptable representation
无法找到可接受的代理
返回 406 http 状态码
环境
基于 springboot,使用 @RestController 和 @PostMapping 注解
这样 web 层返回结果时,直接 return Object,由 spring 将 Object 转化为 json 返回给前端
出现原因
本次原因: 返回体对象没有写 get() 方法【已验证】
使用 @RestController 注解后,controller 层方法直接返回对象,由 spring 来转换为 json 对象返回给前端
如果返回的对象没有 get 或者 set 方法,就会在对象转换为 json 时出现问题,从而抛出这个异常
该原因最不容易发现,因为异常提示和该原因关联性并不强
网上搜索的其他原因【未验证】
-
@PostMapping()注解中的属性 produces 问题- 考虑
produces = {MediaType.APPLICATION_JSON_VALUE} - 该原因是返回体和 produces 描述类型不符合,考虑更换或者去除
- 考虑
-
mvc 扫描 url 的方式问题
- 该原因是对 url 的解析存在问题
- 一种原因是匹配规则有问题,考虑换规则,配置搜索关键字“mvc 路径匹配规则”
- 一种原因是对 url 后缀识别问题,例如 “/user/login.html”,spring 返回时会返回 html 格式,又例如 “/user/login.json”,spring 返回时会返回 json 格式,该问题配置进制后缀扫描即可