集合的详细信息是否少于单个资源?

时间:2015-06-24 15:29:59

标签: rest restful-architecture

我想知道这是否正确或应该避免?

GET / products /

  {
    "id": 1,
    "name": "phone",
    "price" : "10.00 GBP"
  },
  {
    "id": 2,
    "name": "car",
    "price" : "1000.00 GBP"
  }

GET / products / 1

  {
    "id": 1,
    "name": "phone",
    "colour" : "blue",
    "memory: "2GB",
    "storage": "32GB",
    "connectivity" : "3G/4G",
    "price" : "10.00 GBP"
  }

集合产品不会返回有关单个产品的所有详细信息,但在检索单个产品时,您可以看到所有详细信息。

这是错的吗?

1 个答案:

答案 0 :(得分:2)

没错。事实上,您可以使用集合来提供概述"您的实体,而实际细节可以在实体本身找到。通常,在这种情况下,您还提供指向给定实体的链接。

然而,有一个缺点:什么构成了"概述"。对于一个视图,仅显示名称和价格可能就足够了,但另一个概述可能是其他细节,如颜色等。在第一种情况下,获取集合就足够了,在后者中,您必须单独下载每个实体获取颜色。通常情况下,这个系列是“丰富的”#34;因为你不再需要这种颜色,但非常(非常!)很快,这意味着你只是从集合中的实体返回所有数据。

通过使用查询字符串过滤您想要返回的内容(例如:GET /articles?page=5&limit=10&fields=memory,name,colour,storage,可以使其更加动态并允许您提供任何详细视图,从而克服这个问题。那里,包括带宽有限的移动设备等。