REST 应该使用自动生成的字段创建请求拒绝主体还是忽略这些字段?
Should a REST create request reject bodies with auto-generated fields or ignore those fields?
假设一个实体有一个自动生成的字段,例如createdDate: 在 POST 请求中,拒绝正文中包含 createdDate 值的任何请求是否更好,因为用户不应该尝试设置它,或者我应该忽略用户设置的内容,自动生成 createdDate 值并在响应中包含新值?
通常,客户端可以或必须为特定资源设置的值应该由服务器通过类似表单的表示来教导,例如 HTML Web forms,其中各个控制元素的可供性允许客户端指定服务器期望或支持的正确值。在这种情况下,除了服务器直接告知的资源之外,客户端对资源的功能一无所知。
如果服务器告诉客户端某个 属性 支持范围,假设在 0 到 100 之间,客户端尝试发送小于 0 或大于 100 的值或非数值,我更愿意 return 提示某些受支持元素的不当使用的错误。
关于是否忽略某些属性的某些输入值或return错误不是服务器直接教导的属性,它仅基于关于设计选择 IMO 是 return 一个错误还是简单地忽略它。通过 POST 负载根据资源自身的语义进行处理。在这里最好的建议是指向大表亲,browsalbe Web,并询问您将如何在那里做,并在 REST 架构中使用相同的概念。在这里,robustness priciple 要求:
Be conservative in what you do, be liberal in what you accept from others
Be conservative in what you send, be literal in what you accept
因此,我更倾向于忽略客户不应设置的属性,但要准确地向客户 return 说明。但是,如果客户端发送的数据假设对资源的内部结构有所了解,而服务器并未告知,则它违反了 REST 原则,因此指出了 "non-RESTful" 用法。
假设一个实体有一个自动生成的字段,例如createdDate: 在 POST 请求中,拒绝正文中包含 createdDate 值的任何请求是否更好,因为用户不应该尝试设置它,或者我应该忽略用户设置的内容,自动生成 createdDate 值并在响应中包含新值?
通常,客户端可以或必须为特定资源设置的值应该由服务器通过类似表单的表示来教导,例如 HTML Web forms,其中各个控制元素的可供性允许客户端指定服务器期望或支持的正确值。在这种情况下,除了服务器直接告知的资源之外,客户端对资源的功能一无所知。
如果服务器告诉客户端某个 属性 支持范围,假设在 0 到 100 之间,客户端尝试发送小于 0 或大于 100 的值或非数值,我更愿意 return 提示某些受支持元素的不当使用的错误。
关于是否忽略某些属性的某些输入值或return错误不是服务器直接教导的属性,它仅基于关于设计选择 IMO 是 return 一个错误还是简单地忽略它。通过 POST 负载根据资源自身的语义进行处理。在这里最好的建议是指向大表亲,browsalbe Web,并询问您将如何在那里做,并在 REST 架构中使用相同的概念。在这里,robustness priciple 要求:
Be conservative in what you do, be liberal in what you accept from others
Be conservative in what you send, be literal in what you accept
因此,我更倾向于忽略客户不应设置的属性,但要准确地向客户 return 说明。但是,如果客户端发送的数据假设对资源的内部结构有所了解,而服务器并未告知,则它违反了 REST 原则,因此指出了 "non-RESTful" 用法。