对其他资源的副作用

时间:2012-04-11 19:13:56

标签: rest

这是关于RESTful和HATEOAS设计的理论/最佳实践问题......

鉴于资源:

  

/ myresources /(我们的资源对象的集合)

  

/ transactions /(系统中发生的历史交易的集合)

这是一种有效的做法:

  

POST / myresources /

不仅要在/ myresources /创建新资源,还要在/ transactions /?

创建新资源

换句话说,一个URL的POST(或任何动词)是否可以影响该URL和其他URL的资源?还有另一种方法吗?显然我们可以使用两个POST,但这需要我们相信用户在多资源修改中保持有效状态。

2 个答案:

答案 0 :(得分:5)

是的,这很好。想象一下系统公开/myresources/latest URI的另一种情况。当没有资源时,可能会返回404,但是当您开始POST资源时,规范URI和latest URI都将返回200 OK。这种方法有许多有用的好处。

但是,在设计此类资源时请记住缓存。例如,如果您对/myresources/集合进行POST,则在此过程中,您将在任何缓存中使该集合无效。但是,您不会使/transactions/集合无效,并且这两个索引可能会不同步。无论如何,它们可能在整个系统中不同步,具体取决于多个客户端和源服务器之间的缓存图,但通常,客户端设计为期望远程的此操作是同步的,并且缓存可以在这种情况下会感到沮丧。

答案 1 :(得分:1)

对我来说似乎完全合情合理。创建新资源的人无法判断,例如,这是通过对新资源进行另一次客户端轮询来实现的,然后注入事务资源,对吗?

因此,在这个级别上没有任何概念问题,更不用说“服务器创建新资源是否合理”。