[异常记录] Exception:Could not find acceptable representation

3,597 阅读1分钟

异常描述

org.springframework.web.HttpMediaTypeNotAcceptableException: Could not find acceptable representation

无法找到可接受的代理

image.png

返回 406 http 状态码

image.png

环境

基于 springboot,使用 @RestController @PostMapping 注解

这样 web 层返回结果时,直接 return Object,由 spring 将 Object 转化为 json 返回给前端

出现原因

本次原因: 返回体对象没有写 get() 方法【已验证】

使用 @RestController 注解后,controller 层方法直接返回对象,由 spring 来转换为 json 对象返回给前端

如果返回的对象没有 get 或者 set 方法,就会在对象转换为 json 时出现问题,从而抛出这个异常

该原因最不容易发现,因为异常提示和该原因关联性并不强

网上搜索的其他原因【未验证】

  1. @PostMapping() 注解中的属性 produces 问题

    • 考虑 produces = {MediaType.APPLICATION_JSON_VALUE}
    • 该原因是返回体和 produces 描述类型不符合,考虑更换或者去除
  2. mvc 扫描 url 的方式问题

    • 该原因是对 url 的解析存在问题
    • 一种原因是匹配规则有问题,考虑换规则,配置搜索关键字“mvc 路径匹配规则”
    • 一种原因是对 url 后缀识别问题,例如 “/user/login.html”,spring 返回时会返回 html 格式,又例如 “/user/login.json”,spring 返回时会返回 json 格式,该问题配置进制后缀扫描即可