Rest 具有null属性的PUT

Rest 具有null属性的PUT,rest,nullable,Rest,Nullable,有时,我的API接收PUT请求,其中一个布尔属性设置为null。大概是这样的: { "name": "John Doe", "email": "john.doe@company.com", "active": null } 如果这是一个补丁,我会忽略这个属性,但是如果是PUT,我应该怎么做呢?我的直觉是:将“主动”设置为“假”。但我不相信这是正确的休息行为 你觉得怎么样?根据: 6.5.1。400错误请求 400(错误请求)状态代码表示服务器无法或 由于被认为是错误的内容,将不处理

有时,我的API接收PUT请求,其中一个布尔属性设置为null。大概是这样的:

{
  "name": "John Doe",
  "email": "john.doe@company.com",
  "active": null
}
如果这是一个补丁,我会忽略这个属性,但是如果是PUT,我应该怎么做呢?我的直觉是:将“主动”设置为“假”。但我不相信这是正确的休息行为

你觉得怎么样?

根据:

6.5.1。400错误请求

400(错误请求)状态代码表示服务器无法或 由于被认为是错误的内容,将不处理请求 客户端错误(例如,格式错误的请求语法、无效的请求 消息帧或欺骗请求路由)

我想说的是,您应该以
400错误请求
响应拒绝处理未通过数据验证的客户请求

还请注意:

4.3.4。放

PUT方法请求目标资源的状态为 使用表示定义的状态创建或替换 包含在请求消息有效负载中

所以,您不应该忽略无效的字段值

但是,如果您跳过数据验证,只接受客户端发送的新资源状态,则表示形式将与目标资源不一致,您可以尝试重写请求,或因
409冲突
()而失败:

源服务器应验证PUT表示是否正确 与服务器对目标的任何约束一致 PUT不能或不会更改的资源。这是 当源服务器使用内部 与URI相关的配置信息,以便设置 GET响应上表示元数据的值。当一个推杆 表示与目标资源(源)不一致 服务器应通过转换 表示或更改资源配置,或响应 带有包含足够信息的适当错误消息 解释为什么陈述不合适。409(冲突) 或者建议使用415(不支持的介质类型)状态代码 后者特定于内容类型值的约束