REST应该创建具有自动生成字段的请求拒绝体还是忽略这些字段



给定一个实体有一个自动生成的字段,例如createdDate:在POST请求中,拒绝任何正文包含createdDate值的请求是更好的做法,因为用户不应该尝试设置它,还是我应该忽略用户设置的内容,自动生成createdDate的值并在响应中包含新值?

通常,客户端可以或必须为特定资源设置的值应由服务器通过类似表单的表示(如HTMLWeb表单(教授,其中各个控制元素的可供性允许客户端指定服务器期望或支持的正确值。在这种情况下,除了服务器直接告知的能力之外,客户端对资源的能力没有任何了解。

如果服务器告诉客户端某个属性支持一个范围,比如0到100之间,而客户端试图发送小于0或大于100的值或非数值,我更愿意返回一个错误,暗示某些支持元素的使用不当。

关于是忽略某些属性的某些输入值,还是为服务器直接教授的而非的属性返回错误,这完全基于设计选择IMO是返回错误还是简单地忽略它。通过POST,根据资源自身的语义处理有效载荷。在这里,最好的建议是指向大表亲browsalbeweb,并询问您将如何在那里做到这一点,并在REST体系结构中使用相同的概念。这里,稳健性原则要求:

做什么要保守,接受别人的东西要自由

在发送内容上要保守,在接受时要实事求是

因此,我更倾向于忽略客户端不应该设置的属性,但要精确地返回给客户端。然而,如果客户端发送的数据假定对资源的内部有一定的了解,而服务器没有告知,那么它就违反了REST原则,从而指出了"非RESTful"用法。

相关内容

最新更新