审计表或修订历史情况中的PUT与POST

时间:2012-03-02 01:54:29

标签: api rest post put audit-tables

假设我有一个REST方法来更新记录。这显然是一个POST,因为它正在更新资源。但是,在同一动议中,需要创建审计或修订历史记录表中的新记录。

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

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

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

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

1 个答案:

答案 0 :(得分:1)

实际上建议

PUT替换(更新)现有记录。

  

PUT方法请求将所包含的实体存储在提供的Request-URI下。如果Request-URI引用已存在的资源,则封闭的实体应该被视为驻留在源服务器上的实体的修改版本。

还有一些关于POSTPUT之间差异的信息:

  

POST和PUT请求之间的根本区别体现在Request-URI的不同含义上。 POST请求中的URI标识将处理所包含实体的资源。该资源可能是数据接受过程,某些其他协议的网关或接受注释的单独实体。相反,PUT请求中的URI标识请求附带的实体 - 用户代理知道URI的用途,并且服务器不得尝试将请求应用于其他资源。

请参阅here

听起来你应该使用PUT请求来更新资源。审计是这样做的副作用,因此应将其作为PUT新资源的一部分进行处理。