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

问题描述 投票:0回答:1

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

我已经提供了端点。

GET​ /businessrelationships​/{brGlobalKey}

它返回一个资源对象。我想提供 GET 端点(因为这是安全的方法)来获取预定义的对象列表。我想首先使用 POST 创建新资源Lists。

POST ​/businessrelationships​/{brGlobalKey}/lists

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

列表: POST 将是幂等的,将返回 listID例如 123xyz. 然后,我将提供 GET 检索多个对象的列表。

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

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

谢谢你

rest api-design
1个回答
0
投票

我不建议创建一个单独的资源,叫做 list. 我认为即使你想有一个单独的资源,它也没有意义,作为一个子资源的 businessRelationship.

如果列表中的 brGlobalIKeys 过滤器不是太广泛(你的例子表明,常见的API用例需要少量的键),我建议使用一个查询字符串参数,取一个逗号分隔的键列表,并返回一个过滤后的业务关系数组。这将消除你的服务的复杂性(你不需要管理键的列表),而且客户端非常灵活,不需要进行额外的调用来预配置改变列表资源。

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

© www.soinside.com 2019 - 2024. All rights reserved.