在REST中更新内容

时间:2014-07-15 13:47:38

标签: rest asp.net-web-api

从哲学上讲,我对如何处理以下REST场景的一些示例提出了疑问:

1)登录的用户想要“喜欢”'某人的博客发帖。用户ID是guid,博客帖子是guid。这应该是PUT,因为用户/博客存在,或POST,因为“收藏夹”中没有条目。表?

2)数据库中的安全行由10多个属性组成,但我只想更新实体的一部分(用户登录尝试失败次数)。电话应该是什么?用JSON传递整个数据传输对象?或者只是为要更新的特定操作添加新的api路由?即只有一个参数(登录尝试次数)的PUT并传递用户的id。

3)类似于#2,一个用户类(由25多个属性组成),但我只是喜欢用户更新类的特定部分,而不是整个事物。哲学上我需要传递整个用户对象吗?或者只更新一件事就可以了。看起来我可能会变得疯狂,并针对特定属性进行大量特定调用,但实际情况是,我可能只会更新用户的2-3个特定部分(以及显然在其他情况下更新整个内容)。这里有什么方法来更新数据库中实体的特定部分?

非常感谢

1 个答案:

答案 0 :(得分:1)

  1. 如果您还没有ID / UUID,请使用POST。
  2. 资源是安全记录。对该ID执行PUT,并传递要更改的属性块。
  3. 同上(2)。你应该得到任何参数来帮助你识别数据库中的记录。如果在POST请求中发送这些内容并且您正在进行AJAX,那么将它们存放在会话中是不明智的。
  4. 使用REST,一切都是关于更新离散资源(“名词”)。这取决于你想要如何分配这些,但是一个简单的接口,它使用动词(“PUT”,“GET”,“DELETE”等),合理地返回相关的HTTP代码,并且很容易让其他人实现最好的方式。

    所以,问问自己,“我想给CRUD提供哪些名词,我是否会耗尽那些希望使用我的API的人?”