浏览器里表单填满了,提交后接口提示必填项为空。碰到这种情况,我一般先确认改动有没有真的生效。
原因不复杂,前端使用的字段名与接口约定不同,或嵌套结构没有按接口要求序列化。
「表单字段名不一致」这个问题文档写得含糊,实际行为以当前版本为准,别照旧版本的结论套。日志级别临时调高可以,记得改回去,长期开着既占磁盘又掩盖真问题。
console.log(Object.fromEntries(new FormData(form)));
// 接口期望 { user: { name } }
权限不要一口气开到最大,先加到够用再往上试,范围小才好收。把复现步骤压到三条以内,交给同事也能跑出来,才算真的定位清楚。
改动写完就同步给同事,下一个人踩同一个坑,成本还是你的。验证用真实数据走一遍,测试数据太干净,边界情况根本碰不到。
能分两步做的操作就别合成一步,中间看一眼返回值,出问题好判断。
具体做法是,对照接口文档逐字段核对;统一命名风格;提交前打印实际载荷。
最后用这个标准收尾,接口能正确接收到全部字段,校验通过。