Rest 具有null属性的PUT
有时,我的API接收PUT请求,其中一个布尔属性设置为null。大概是这样的: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(错误请求)状态代码表示服务器无法或 由于被认为是错误的内容,将不处理
{
"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(不支持的介质类型)状态代码
后者特定于内容类型值的约束