rest - 集合的详细信息是否比单个资源少?

标签 rest restful-architecture

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

获取/产品/

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

获取/产品/1

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

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

这是错误的吗?

最佳答案

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

但是,有一个缺点:什么是“概述”。对于一个 View ,仅显示名称和价格可能就足够了,但另一个概述可能会显示其他详细信息,例如颜色等。在第一种情况下,获取集合就足够了,在后者中,您必须单独下载每个实体以获取颜色。通常,集合会用颜色“丰富”,因此您不必再这样做,但很快(非常!),这意味着您只是从集合中的实体返回所有数据。

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

关于rest - 集合的详细信息是否比单个资源少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31030772/

相关文章:

iOS REST 调用和缓存策略

java - 无法使用 org.json.simple.JSONObject 访问其余 CXF

php - PHP REST API 如何接收 PUTted 数据?

java - 如何处理来自 REST 服务的大量数据

java - 如何在每个java Restful服务中使用一个apache Camel上下文对象

forms - Symfony2 表单提交无效的 boolean 值

java - glassfish 的基本身份验证失败

node.js - 对链接用户进行分组的最佳策略是什么

api - 如何在 RESTful API 中创建/更新多对多关系

java - 如果缺少@Produces 注释, Jersey 服务会返回什么?