后端返回null通常表示资源不存在或查询无结果,这是一种明确的语义表达,而空对象可能表示资源存在但属性为空,从API设计角度看,返回null更节省带宽,且前端可以通过===null进行快速判断,行业共识认为,保持前后端对null语义的一致性至关重要,避免前端出现歧义判断。
当数据结构复杂时,如response.data.user.profile,直接访问可能因中间节点为null而报错,建议使用可选链操作符,如response.data?.user?.profile,如果任一节点为null或undefined,表达式将返回undefined而非报错,可以使用Lodash库的_.get()方法,提供默认值,如_.get(response,'data.user.profile',{}),确保即使路径不存在也能返回安全的默认值。
网络错误或超时通常触发Ajax的
error回调,而非success回调,在success回调中,如果收到null,说明请求成功但数据为空,区分的关键在于回调函数的执行路径,建议在error回调中记录网络状态,在success回调中检查数据内容,如果error被触发,应提示用户检查网络连接;如果success触发且数据为null,则提示用户暂无数据,这种分层处理策略能有效提升用户体验,避免将网络故障误判为数据缺失。