假设我有一个REST方法来更新记录。这显然是一个POST,因为它正在更新资源。但是,在同一动议中,需要创建审计或修订历史记录表中的新记录。
这里是否有标准或最佳做法,无论是使用POST还是PUT?
REST方法是来自用户端发生的事情,还是来自数据库中发生的事情?
一种可能性是只调用一个方法,该方法更新一个表中的记录并在另一个表中创建新记录。
另一种可能性是强制POST仅更新一个表,并且需要一个额外的方法来在审计表中执行PUT。这迫使使用2种方法,并将责任放在开发人员身上,我不太热衷于此。
答案 0 :(得分:1)
PUT
替换(更新)现有记录。
PUT方法请求将所包含的实体存储在提供的Request-URI下。如果Request-URI引用已存在的资源,则封闭的实体应该被视为驻留在源服务器上的实体的修改版本。
还有一些关于POST
和PUT
之间差异的信息:
POST和PUT请求之间的根本区别体现在Request-URI的不同含义上。 POST请求中的URI标识将处理所包含实体的资源。该资源可能是数据接受过程,某些其他协议的网关或接受注释的单独实体。相反,PUT请求中的URI标识请求附带的实体 - 用户代理知道URI的用途,并且服务器不得尝试将请求应用于其他资源。
请参阅here。
听起来你应该使用PUT
请求来更新资源。审计是这样做的副作用,因此应将其作为PUT
新资源的一部分进行处理。