集合的细节是否少于单个资源?
Does a collection have less details than a single resource?
我想知道这是正确的还是应该避免?
获取/产品/
{
"id": 1,
"name": "phone",
"price" : "10.00 GBP"
},
{
"id": 2,
"name": "car",
"price" : "1000.00 GBP"
}
获取/products/1
{
"id": 1,
"name": "phone",
"colour" : "blue",
"memory: "2GB",
"storage": "32GB",
"connectivity" : "3G/4G",
"price" : "10.00 GBP"
}
集合产品不会return单个产品的所有详细信息,但在检索单个产品时可以看到所有详细信息。
这是错误的吗?
没有错。事实上,您可以使用集合来提供实体的 "overview",而实际的详细信息可以在实体本身中找到。通常,在这种情况下,您还会向给定实体提供 link。
但是,有一个缺点:什么构成 "overview"。对于一个视图,可能只显示名称和价格就足够了,但另一个视图可能会显示其他详细信息,如颜色等。在第一种情况下,获取集合就足够了,在后者中,您必须单独下载每个实体到获取颜色。通常,集合 "enriched" 带有颜色,因此您不必再这样做了,但是很快(非常!),这意味着您只是 return 集合中实体的所有数据无论如何。
可以通过使用查询字符串过滤您想要的内容来克服这个问题 return(例如:GET /articles?page=5&limit=10&fields=memory,name,colour,storage
,这将使它更加动态并允许您提供任何详细信息在那里查看,包括带宽有限的移动设备等
我想知道这是正确的还是应该避免?
获取/产品/
{
"id": 1,
"name": "phone",
"price" : "10.00 GBP"
},
{
"id": 2,
"name": "car",
"price" : "1000.00 GBP"
}
获取/products/1
{
"id": 1,
"name": "phone",
"colour" : "blue",
"memory: "2GB",
"storage": "32GB",
"connectivity" : "3G/4G",
"price" : "10.00 GBP"
}
集合产品不会return单个产品的所有详细信息,但在检索单个产品时可以看到所有详细信息。
这是错误的吗?
没有错。事实上,您可以使用集合来提供实体的 "overview",而实际的详细信息可以在实体本身中找到。通常,在这种情况下,您还会向给定实体提供 link。
但是,有一个缺点:什么构成 "overview"。对于一个视图,可能只显示名称和价格就足够了,但另一个视图可能会显示其他详细信息,如颜色等。在第一种情况下,获取集合就足够了,在后者中,您必须单独下载每个实体到获取颜色。通常,集合 "enriched" 带有颜色,因此您不必再这样做了,但是很快(非常!),这意味着您只是 return 集合中实体的所有数据无论如何。
可以通过使用查询字符串过滤您想要的内容来克服这个问题 return(例如:GET /articles?page=5&limit=10&fields=memory,name,colour,storage
,这将使它更加动态并允许您提供任何详细信息在那里查看,包括带宽有限的移动设备等