首页 > 解决方案 > 如果我们将额外/不必要的键值对传递给 API 有效负载,API 验证的行为应该是什么?

问题描述

假设 Api 期望有效负载中有两个键值对。我知道我们可以使用 express-validator 或 any 来验证这两对。但是,如果我传递第三个键值对怎么办。API 是否应该返回诸如超出对象之类的错误?

标签: node.jsexpress

解决方案


当你定义你的 API 时,这个决定真的取决于你。

在标准 REST API 中,在预期负载要求之外提供的数据应返回错误。通常,您会返回 a400 Bad Request以指示提供的有效负载不符合预期。确保这一点的一种方法是使用数据验证工具,例如Joi来测试您传入的有效负载的正确性。

有些人,比如我自己,认为HTTP 状态代码特定于底层通信协议,而不是请求的内部格式。在这个视图中,所有成功接收的请求都返回一个200类似{ok:bool, message: string}这样的东西,在成功操作的情况下,结果将是

{ok: true, message: "success"}

在出错的情况下,

{ok: false, message: "incomplete payload"}.

如果您的特定用例需要更宽松的验证(可能是在您不控制传入有效负载的情况下),您可以只验证您需要的那些字段并默默地忽略任何无关数据。


推荐阅读