工作空间 / 缺失、null、空字符串:把接口字段的含义说清楚

缺失、null、空字符串:把接口字段的含义说清楚

用更新接口的例子区分“不修改”“清空”和“空文本”。

问题场景

同一个备注字段,传 null、空字符串或者不传,最后都在页面上显示为空。它们在更新接口里应该如何区分?

排查与解法按顺序复现、定位和验证

先定义业务含义

同一个字段缺失、显式为 null、传空字符串是三个不同输入。它们如何影响业务,需要接口约定;JSON 本身不会替你决定“null 就是删除”。

对比三个请求

以下语义仅是一个 PATCH 接口的约定示例:缺失表示不修改,null 表示清空,空字符串表示保存空文本。实际接口应以文档和处理逻辑为准。

{}

{
  "remark": null
}

{
  "remark": ""
}

避免默认值覆盖信息

使用 || 会把 0、false、空字符串一起当成无值;?? 只对 null 和 undefined 生效,但也会合并这两种情况。需要区分字段是否存在时,检查对象自身属性。

if (Object.hasOwn(payload, "remark")) {
  // 进入更新分支,再根据 null 或字符串执行明确规则
}

建立联调用例

分别提交缺失、null、空字符串、空白字符串、正常文本和类型错误。核对校验、更新 SQL、返回结果与审计记录;不要只看页面最终渲染成了一样的空白。