我们正在考虑对服务器端POST请求正文进行不同类型的验证。
我们应该为POST请求的主体提供严格的架构,并且当用户的请求包含架构中未提及的其他字段时抛出4xx错误。
此外,我在搜索时遇到了以下问题:
更重要的是,在REST服务中,模式验证通常不是一个好主意。 REST的主要目标是使客户端和服务器脱钩,以便它们可以分别发展。
以上是否意味着用户也可以在请求正文中发送不必要的数据?
答案 0 :(得分:1)
如果可以的话,我将绝对严格地验证所有传入的数据。 Postel的“在接受的东西上保持自由”定律被广泛认为是一个坏主意。
一个大问题是,客户端可能会拼写错误的可选字段,而无法获得有关其应发送内容的反馈。服务器很少有理由仅接受垃圾值,因为通常它是某个地方存在错误的有力指示。希望使该错误非常明显而不是被其默默忽略是很聪明的。
如果要构建API,请使用JSON-Schema并严格。
答案 1 :(得分:0)
是的,它对我有用。没有任何令人信服的理由拒绝您可以成功响应的请求,仅因为在合理的情况下有额外的数据(无论如何,您对API都有POST大小限制)。
关于解耦进化的观点是一个很好的观点。田野来去去;没有理由不接受对必填字段的定义已过时的请求。我建议出于相同的原因,反对将 必填字段添加到同一API端点。归根结底,更改是API遇到困难的最大因素,而 rigidity 只会使更改带来的影响更加痛苦。毕竟,我们不是“只是”希望它为我们的用户服务吗?