对其他资源的副作用

Jam*_*mes 6 rest

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

鉴于资源:

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

/ transactions /(系统中发生的历史事务的集合)

这是一种有效的做法:

POST/myresources /

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

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

fum*_*chu 5

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

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