2012-03-02 48 views
0

比方说,我有一个REST方法来更新记录。这显然是一个POST,因为它正在更新资源。但是,在同一动作中,需要创建审计或修订历史记录表中的新记录。PUT vs POST在审计表或修订历史情况下

这里有标准或最佳做法,是否使用POST或PUT?

REST方法是来自用户端发生了什么,还是来自数据库中发生的事情?

一种可能性是只调用一个方法,该方法更新一个表中的记录并在另一个表中创建新记录。

另一种可能性是强制POST仅更新一个表,并且需要额外的方法在审计表中执行PUT。这迫使使用2种方法,并把责任交给开发者,我不太热衷于此。

回答

1

PUT实际上建议用于替换(更新)现有记录。

PUT方法要求封闭实体存储在提供的Request-URI下。如果Request-URI指向一个已经存在的资源,那么封闭的实体应该被认为是驻留在原始服务器上的修改版本。

还有约POSTPUT之间的差别的一些信息:

的POST的根本区别和PUT请求反映在Request-URI的不同的含义。 POST请求中的URI标识将处理封闭实体的资源。该资源可能是数据接受过程,其他协议的入口或接受注释的独立实体。相比之下,PUT请求中的URI标识请求附带的实体 - 用户代理知道URI的目标是什么,服务器不能尝试将请求应用于其他资源。

请参阅here

对我来说,听起来你应该使用PUT请求来更新资源。审计是这样做的一个副作用,所以它应该作为PUT的一部分来处理新资源。