Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rest 集合的详细信息是否少于单个资源?_Rest_Restful Architecture - Fatal编程技术网

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

Rest 集合的详细信息是否少于单个资源?,rest,restful-architecture,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", "m

我想知道这是正确的还是应该避免

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"
  }
collections products不会返回单个产品的所有详细信息,但在检索单个产品时,您可以看到所有详细信息


这不对吗?

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

然而,也有一个缺点:什么构成“概述”。对于一个视图,仅显示名称和价格就足够了,但另一个概览可能会显示颜色等其他详细信息。在第一种情况下,获取集合就足够了,在后一种情况下,必须分别下载每个实体以获取颜色。通常情况下,集合会使用颜色“丰富”,这样您就不必再这样做了,但很快(很快!)就意味着您将返回集合中实体的所有数据


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

完全同意您的观点。这正是我所想的。非常感谢您!我喜欢您的大部分答案。),但这一部分:“通常情况下,在这种情况下,您还提供指向给定实体的链接。”我不同意这一点。我认为您必须这样做(在任何情况下)。由于REST完全基于HATEO工作,否则客户端不可能仅使用该集合的一个实体进行操作,例如读取其他字段或对其执行CRUD方法。我同意,但只有在给定元素本身确实是资源的情况下,发送链接才有意义。情况并非总是如此,也并非总是必要的。Examplle可以是一个国家的列表,例如)。这些国家可能有额外的信息,也可能是资源本身,但也可以是API中(已接受)国家的简单列表,这些国家本身形成一个集合,而不是单独的资源。