6

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

鉴于资源:

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

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

对于以下情况是否有效:

发布/我的资源/

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

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

4

2 回答 2

5

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

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

于 2012-04-11T23:20:22.667 回答
1

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

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

于 2012-04-11T19:26:15.703 回答