node.js - 如果我们将额外/不必要的键值对传递给 API 有效负载,API 验证的行为应该是什么?
问题描述
假设 Api 期望有效负载中有两个键值对。我知道我们可以使用 express-validator 或 any 来验证这两对。但是,如果我传递第三个键值对怎么办。API 是否应该返回诸如超出对象之类的错误?
解决方案
当你定义你的 API 时,这个决定真的取决于你。
在标准 REST API 中,在预期负载要求之外提供的数据应返回错误。通常,您会返回 a400 Bad Request
以指示提供的有效负载不符合预期。确保这一点的一种方法是使用数据验证工具,例如Joi来测试您传入的有效负载的正确性。
有些人,比如我自己,认为HTTP 状态代码特定于底层通信协议,而不是请求的内部格式。在这个视图中,所有成功接收的请求都返回一个200
类似{ok:bool, message: string}
这样的东西,在成功操作的情况下,结果将是
{ok: true, message: "success"}
在出错的情况下,
{ok: false, message: "incomplete payload"}
.
如果您的特定用例需要更宽松的验证(可能是在您不控制传入有效负载的情况下),您可以只验证您需要的那些字段并默默地忽略任何无关数据。
推荐阅读
- amazon-web-services - 跨多个 AWS 账户生成 IP 和 EIP 列表
- plotly - 如何在 Databricks 的 Plotly 图表中处理点击事件?
- spring - 来自 AWS 开发工具包的模拟 ListUsersIterable - JUnit
- python-3.x - 如何在 conda env 中安装软件包
- kubernetes - 如何在不停机的情况下更改 k8s 部署的 matchLabels?
- node.js - 使用 Cloud Build 部署到 App Engine 时如何使用相关依赖项
- python - 如何根据索引将行从一个数据帧复制到另一个数据帧?
- flutter - 有没有办法在网页上显示颤振代码输出
- typescript - 描述对象之间的 1:1 映射
- matlab - 通过尽可能接近匹配不同的数字来过滤表行 Matlab