验证REST API的HTTP POST请求正文

时间:2018-08-15 14:25:45

标签: rest api http post

我们正在考虑对服务器端POST请求正文进行不同类型的验证。

我们应该为POST请求的主体提供严格的架构,并且当用户的请求包含架构中未提及的其他字段时抛出4xx错误。

此外,我在搜索时遇到了以下问题:

  

更重要的是,在REST服务中,模式验证通常不是一个好主意。   REST的主要目标是使客户端和服务器脱钩,以便它们可以分别发展。

以上是否意味着用户也可以在请求正文中发送不必要的数据?

2 个答案:

答案 0 :(得分:1)

如果可以的话,我将绝对严格地验证所有传入的数据。 Postel的“在接受的东西上保持自由”定律被广泛认为是一个坏主意。

一个大问题是,客户端可能会拼写错误的可选字段,而无法获得有关其应发送内容的反馈。服务器很少有理由仅接受垃圾值,因为通常它是某个地方存在错误的有力指示。希望使该错误非常明显而不是被其默默忽略是很聪明的。

如果要构建API,请使用JSON-Schema并严格。

答案 1 :(得分:0)

是的,它对我有用。没有任何令人信服的理由拒绝您可以成功响应的请求,仅因为在合理的情况下有额外的数据(无论如何,您对API都有POST大小限制)。

关于解耦进化的观点是一个很好的观点。田野来去去;没有理由不接受对必填字段的定义已过时的请求。我建议出于相同的原因,反对将 必填字段添加到同一API端点。归根结底,更改是API遇到困难的最大因素,而 rigidity 只会使更改带来的影响更加痛苦。毕竟,我们不是“只是”希望它为我们的用户服务吗?