REST API - 如果请求正文包含的信息多于所需信息,我是否应该返回错误?

时间:2017-08-01 05:52:41

标签: web-services rest

我当前的配置限制了每个端点的请求主体的属性数和大小。如果请求正文提供的信息多于所需信息,我是否应该返回错误?

让我们说/authenticate端点需要如下所示的JSON主体:

{
  "login": "string";
  "password": "string";
}

并且用户发送请求

{
  "login": "mylogin",
  "password": "mypassword",
  "foo": "bar"
}

在这种情况下REST API是否应该返回错误?

2 个答案:

答案 0 :(得分:2)

这里有两个选项:

<强> 1。忽略不会影响请求处理且无法更改的字段。

默认情况下,填充实体的大多数JSON / XML解析器会跳过尚未反映在模型中的字段。

<强> 2。严格的字段匹配并返回HTTP 422 UNPROCESSABLE ENTITY400 BAD REQUEST代码。

您可以拥有每个端点的所有允许字段的列表,以将传入的请求与。

进行比较

这取决于您的API设计以及您希望用户遵循的样式。

答案 1 :(得分:0)

默认情况下,不会对其他字段验证请求。对于json模式,有一个参数' additionalProperties ',其值可以设置为false。

请参阅此链接Understanding JSON schema validation。相关部分复制如下。

  

additionalProperties关键字用于控制额外内容的处理,即属性名称未在properties关键字中列出的属性。默认情况下,允许任何其他属性。   additionalProperties关键字可以是布尔值或对象。如果additionalProperties是布尔值并设置为false,则不允许其他属性。