Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 处理API响应中缺少的属性_Javascript_Rest_Validation_Single Page Application - Fatal编程技术网

Javascript 处理API响应中缺少的属性

Javascript 处理API响应中缺少的属性,javascript,rest,validation,single-page-application,Javascript,Rest,Validation,Single Page Application,如何处理来自后端的API响应中缺少的属性 我有一个React应用程序,我从后端获取一些数据。然后,我使用这些数据呈现一些元素,并根据响应中的值处理一些操作。但有些值可能会丢失。 那么,我是否应该始终以这样一种方式验证API响应,即为缺少的属性分配默认值,如: import { get } from 'lodash' const { data } = await axios.get(...); const dataForFrontend = { id: get(data, 'id', '

如何处理来自后端的API响应中缺少的属性

我有一个React应用程序,我从后端获取一些数据。然后,我使用这些数据呈现一些元素,并根据响应中的值处理一些操作。但有些值可能会丢失。 那么,我是否应该始终以这样一种方式验证API响应,即为缺少的属性分配默认值,如:

import { get } from 'lodash'


const { data } = await axios.get(...);

const dataForFrontend = {
  id: get(data, 'id', 'N/A'),
  name: get(data, 'name', 'N/A'),
  lastName: get(data, 'lastName', 'N/A'),
  email: {
    address: get(data, 'email.address', 'N/A'),
    active: get(data, 'email.active', false),
  }
}
若数据并没有电子邮件字段,我马上就使用了它,那个么前置应用程序很可能会和无法读取未定义的属性地址决裂

…或者我应该立即使用数据并假设它是有效的,否则这意味着后端被破坏,通过分配默认值,我只是将问题隐藏起来,我的意思是,稍后它会出现一些其他错误,例如,尝试用N/A乘以100


我想知道正确的方法-验证或假设它必须是有效的?

如何处理这一问题完全取决于您的业务需求以及您在处理这些案例时愿意付出的努力

我同意,如果你的前端应用程序可能试图将该字符串乘以100,那么返回N/a将是一个坏主意

最多的工作,最好的用户体验

听起来您的数据库或API中有可能缺少属性的合法条目。在这种情况下,您可能最好遵循优雅降级策略,其中前端逻辑准备好处理丢失的属性,可能需要在对该记录进行任何进一步工作之前填写这些丢失的属性

更少的工作,仍然向用户传达问题

下一个最好的选择可能是立即验证传入的数据,并使用抛出的错误使请求失败,该错误将以有用的信息呈现给用户

最坏的方法

在这三种选择中,对不完整的记录进行平装似乎是最糟糕的选择