我当前的配置限制了每个端点的请求主体的属性数和大小。如果请求正文提供的信息多于所需信息,我是否应该返回错误?
让我们说/authenticate
端点需要如下所示的JSON主体:
{
"login": "string";
"password": "string";
}
并且用户发送请求
{
"login": "mylogin",
"password": "mypassword",
"foo": "bar"
}
在这种情况下REST API是否应该返回错误?
答案 0 :(得分:2)
这里有两个选项:
<强> 1。忽略不会影响请求处理且无法更改的字段。
默认情况下,填充实体的大多数JSON / XML解析器会跳过尚未反映在模型中的字段。
<强> 2。严格的字段匹配并返回HTTP 422 UNPROCESSABLE ENTITY
或400 BAD REQUEST
代码。
您可以拥有每个端点的所有允许字段的列表,以将传入的请求与。
进行比较这取决于您的API设计以及您希望用户遵循的样式。
答案 1 :(得分:0)
默认情况下,不会对其他字段验证请求。对于json模式,有一个参数' additionalProperties ',其值可以设置为false。
请参阅此链接Understanding JSON schema validation。相关部分复制如下。
additionalProperties关键字用于控制额外内容的处理,即属性名称未在properties关键字中列出的属性。默认情况下,允许任何其他属性。 additionalProperties关键字可以是布尔值或对象。如果additionalProperties是布尔值并设置为false,则不允许其他属性。