我们应用程序的一小部分如下:
集合-》集合-》项
即顶层是集合的集合,每个集合又是项的集合。
此外,每个项具有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
正如我之前提到的,这只是我们应用程序的一小部分,我预计还需要公开几个不同的集合和项目。
我的问题是:
- 拥有如此众多的媒体类型是否存在问题?
- 有什么替代设计方法可以避免这种媒体类型爆炸?
我也意识到上面的设计非常细粒度,特别是暴露了每个项目的单独属性,并为其单独定义了媒体类型。然而,如果将其变得粗略,则意味着在事实上客户端只需要读取或写入项目的单个属性时,会传输不必要的数据。您将如何处理这样的设计问题?