这里有很多线程在讨论何时使用HTTP PUT与POST。但是,很明显,应该可以通过任何一种方法更新记录。
我不想进入不相关的细节,我想通过POST创建或更新记录。
如果我理解正确,我应该能够根据我是否在HTTP Body中包含现有记录的id来实现这一点。如果POST包含一个id,那么它是一个更新,否则它是一个创建请求(并且将返回带有id的新创建的记录)。
因此,
PUT:http://www.database.com/record/99(在HTTP正文中有记录属性)
相当于,
POST:http://www.database.com/records(记录ID = 99,HTTP体中的属性)
我的POST代码可以很好地创建新记录(即当我不包含id时)。但是,当我在HTTP Body中包含id时,它会被忽略,服务器只执行创建,而不是更新。
因此,我想知道,我对POST HTTP Body如何被解释正确的理解?
答案 0 :(得分:1)
您对POST主体解释方式的解释是不正确的。
ID必须位于URL中才能将其识别为更新。 URL指定要更新的资源,而不是正文。
坚持使用POST进行创建和PUT更新的Rails惯例比尝试使用它更容易。这些约定是有原因的,所以你不必担心这样的事情。
答案 1 :(得分:0)
取决于您的路线> 我正在使用默认的脚手架,PUT的唯一操作是UPDATE(你必须传递ID)
使用脚手架,路线方法和行动是: