如何使用RESTful Web服务描述子资源的一部分?

时间:2011-01-28 03:39:21

标签: rest

我们正在设计一个基于RESTful Web服务和面向资源的架构的应用程序,如o'Reilly书中的RESTful Web服务所述。

我们还在实施客户端缓存。

我的问题是 - 假设你有一个共同的子资源,但你正在修改它的一部分。 如何表示新修改的资源,以便可以将其与原始资源分开缓存,并在服务器上引用修改。

例如,我们的应用程序是一个财务建模应用程序。

我可能会要求提供有关IBM的财务数据:

GET http://{servername}:{port}/[HOLTWS]/resources/factsheet/IBM/variables/{Variable-List-Id}

好的,这将返回IBM当前财年的基本“资料单”。

但是现在,我想将模型会计年度更改为上一年度。我可以使每年都有自己的子资源,但这似乎过于细化,会导致太多变化。

有没有一个好的ROA方法可以请求一个子资源并使用条件GET处理客户端缓存而不会使子资源的每个子集成为新的子资源?

2 个答案:

答案 0 :(得分:4)

我不太明白你的问题,但这里有一些可能有用的信息。

没有子资源这样的东西。如果URL更改并返回200,那么它是一个不同的资源,并将被缓存。

如果你做一个PUT / Foo / Bar但你返回一个标题Content-Location:/ Foo我相信缓存应该无效/ Foo

有关与依赖资源相关的缓存失效的更多信息,请查看此http://ws-rest.org/files/03-Link%20Header-based%20Invalidation%20of%20Caches.pdf

答案 1 :(得分:0)

在您的应用程序中,“年”类似于(例如)长篇新闻文章中的“页面”?如果是这样,我建议你使用查询字符串。在RESTful应用程序中,我使用查询字符串来指示具体资源的一部分。