【发布时间】:2009-05-19 03:47:42
【问题描述】:
在尝试使用 REST 架构风格重新设计现有应用程序时,我遇到了一个我想称之为“媒体类型爆炸”的问题。但是,我不确定这是否真的是一个问题或 REST 的固有优势。为了解释我的意思,举个例子
我们应用程序的一小部分如下所示:
collection-of-collections->collections-of-items->items
即顶层是集合的集合,每个集合又是项目的集合。
此外,每个项目都有 8 个属性,可以单独读取和写入。尝试将上述层次结构公开为 RESTful 资源会给我留下以下媒体类型:
application/vnd.mycompany.collection-of-collections+xml
application/vnd.mycompany.collection-of-items+xml
application/vnd.mycompany.item+xml
此外,由于每个项目都有 8 个可以单独读取和写入的属性,因此会产生另外 8 个媒体类型。例如项目的“值”属性的一种这样的媒体类型是:
application/vnd.mycompany.item_value+xml
正如我之前提到的,这只是我们应用程序的一小部分,我希望有几个不同的集合和项目需要以这种方式公开。
我的问题是:
- 拥有这么多媒体类型是不是我做错了什么?
- 有什么替代设计方法可以避免这种媒体类型的爆炸式增长?
我也知道上面的设计是高度精细的,尤其是暴露了项目的各个属性并为每个属性设置了单独的媒体类型。然而,粗化意味着我最终会通过网络传输不必要的数据,而实际上客户端只需要读取或写入项目的单个属性。您将如何处理这样的设计问题?
【问题讨论】:
标签: rest