REST资源设计:嵌入相关数据VS链接到它?

时间:2011-02-18 22:39:12

标签: caching rest resources

我有一个包含文章和作者资源的REST系统。通常,在访问文章时,我也想知道作者的姓名。我可以通过几种方式制作文章来实现这一目标:A)将作者姓名的副本直接嵌入文章中;或者B)在文章中包含指向适当作者资源的URI。

将作者姓名直接复制到文章资源中显然存在缺点。通过将信息复制到多个资源中,我打开了资源之间的冲突。在作者更新其名称后,文章资源可以具有其旧名称,而作者资源将具有新名称。

也许如果我不缓存文章这可能不是问题?但是作为一个实际问题,非常需要快速和减少返回服务器的次数,因此浏览器中的缓存是我正在拍摄的。

在方案B中,使用URI进行链接似乎是正确的,并且更加缓存友好。 但是这使得回调到服务器的次数加倍:每篇文章都需要第二次(连续)获取作者。因此,以另一种方式代价高昂,特别是如果我们正在讨论多个其他资源的URI。当一次显示50篇文章时,这可能会变得疯狂。

我想听听其他人如何解决这个问题。是否有值得阅读的“最佳实践”论文?

1 个答案:

答案 0 :(得分:1)

  

链接...将呼叫数量翻倍至服务器:每篇文章都需要第二次(连续)提取作者。

REST包含缓存约束正是出于这个原因,如果数据已经位于本地缓存中(或者可以是请求),则不需要“第二次获取” 如果缓存是中间设备或服务器端,则仅使用部分网络资源。如果您可以通过这种方式设计数据以利用此功能,则可以将网络总流量减少数量级。如果它不能,那么应用REST架构风格是没有意义的,这取决于缓存网络效率 - 选择不同的风格,如RPC。