RESTapi调用与前端接收数据不一致,AmountOfEggs属性丢失问题求助
排查步骤
第一步:确认原始响应是否包含该字段
- 打开浏览器开发者工具「网络」面板,找到对应API请求,直接查看「响应」标签的原始JSON报文,确认
AmountOfEggs属性是否存在:- 如果原始响应中无该字段,问题出在服务端返回逻辑和Swagger测试的场景差异:常见原因包括Swagger走测试环境/无权限过滤逻辑,前端调用的生产环境带权限拦截、动态字段过滤规则,该字段被权限校验逻辑直接过滤。
- 如果原始响应中有该字段,问题出在前端侧的响应解析逻辑,走第二步排查。
第二步:排查前端响应解析逻辑
- 检查HTTP请求库(如Axios、Fetch)的全局配置:有没有自定义
transformResponse钩子、全局响应拦截器,是否配置了驼峰/下划线自动转换规则?比如接口返回大驼峰AmountOfEggs,拦截器自动转成小驼峰amountOfEggs未被识别,或者转换规则漏匹配该字段直接丢弃。 - 检查前端是否用了序列化转换工具:比如class-transformer、自定义反序列化类,若类定义中未声明
AmountOfEggs属性,序列化时会直接丢弃未声明的字段。 - 排除控制台打印的缓存干扰:不要直接打印
result.data,而是打印JSON.stringify(result, null, 2),确认原始响应字符串中是否包含该字段,避免console.log异步取值的显示误差。
第三步:排查服务端序列化逻辑
- 确认返回对象的
AmountOfEggs字段是否加了@JsonIgnore、@JsonInclude之类的序列化忽略注解,是否满足注解的过滤条件。 - 检查服务端是否有动态字段过滤逻辑:比如根据请求头、用户权限动态裁剪返回字段,前端请求的头信息(比如Accept、自定义身份头)和Swagger请求的头信息不一致,触发了过滤规则。
- 在服务端接口返回前打日志,输出序列化之前的对象属性值,确认该字段在服务端序列化前已经被正确赋值。
内容的提问来源于stack exchange,提问作者Jasper
相关产品推荐
相关产品推荐

