比方说,我有一个FooEnity
,其ID为35,由Web服务公开,位于/myhost/api/fooentity/35
。PATCH请求主体中的REST实体ID
现在我想实现一个PATCH调用,允许部分更新到FooEntity
(所以我们假设25个可用字段中的2个被传递更新)。
我的问题是,如果PATCH内容(json/xml)包含35的id
?实体的地址由URI指定,并且id
不是可更新的字段,并且如果包含该字段,则需要额外验证以确保两个ID都匹配。所有这些建议否。不过,它感觉很奇怪,没有它在那里。
什么是适当的方法来做到这一点? (注意,问题与语言无关,但在ASP.NET 4.0 Web API框架中实现,如果这会影响任何人的答案)。
感谢您的回复。鉴于我已经制定的一切,以及您自己的选项列表,您会以哪种方式进行操作? – tcarvin 2013-02-15 18:57:59
个人而言,我会忽略请求正文中的ID。我并不是说这是最好的解决方案,但我喜欢在理性的范围内保持尽可能简单的逻辑。 – 2013-02-15 19:43:45
感谢您的反馈。我最终在PATCH方法的模型中将id字段设置为可以为null的int(因此是可选的),并且在model.id为null的情况下从URI中交换id。如果指定并且不同于URI中的那个,我会返回一个错误的请求。 – tcarvin 2013-02-20 13:35:30