REST:获取多个资源——什么是正确的 REST 方法

REST: Get multiple resources - what is correct REST approach

我知道这个问题已经回答了好几次,但我仍然不确定提供 GET 一长串非结构化查询参数或 POST 来获取数据是正确的方法。

我已经提供了端点:

GET​ /businessrelationships​/{brGlobalKey}

其中 return 一个 resource/object。我想提供 GET 端点(因为这是安全的方法)来获取预定义的对象列表。我想首先使用 POST 创建新资源,Lists:

POST ​/businessrelationships​/{brGlobalKey}/lists

with Body : {
  "brGlobalKeys": [
    1234,
    212354,
    3748
  ]
}

POST 将是幂等的,并且 return listID,例如 123xyz。然后我会提供 GET 来检索包含多个对象的列表:

GET ​/businessrelationships​/{brGlobalKey}/lists/123xyz

请告诉我这是正确的方法吗?我知道使用 2 次调用而不是 1 次调用会影响性能,但是由消费者决定他们是想 GET 多次使用单个资源还是使用列表。

谢谢

我不建议创建名为 list 的单独资源。而且我认为即使您想拥有一个单独的资源,作为 businessRelationship.

的子资源也没有意义

如果 brGlobalIKeys 过滤器的列表不是太广泛(您的示例表明常见的 API 用例需要一些键)我建议为此使用查询字符串参数采用逗号分隔的键列表和 return 过滤的业务关系数组。这消除了您服务的复杂性(您不需要管理密钥列表)并且客户端非常灵活,无需额外调用 preconfigure/change 列表资源。

示例:https://base.com/businessRelationships?filteredKeys=123,234,345