我知道这个问题已经被回答过好几次了,但我仍然不确定提供 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
单一资源多次或使用列表。
谢谢你
我不建议创建一个单独的资源,叫做 list
. 我认为即使你想有一个单独的资源,它也没有意义,作为一个子资源的 businessRelationship
.
如果列表中的 brGlobalIKeys
过滤器不是太广泛(你的例子表明,常见的API用例需要少量的键),我建议使用一个查询字符串参数,取一个逗号分隔的键列表,并返回一个过滤后的业务关系数组。这将消除你的服务的复杂性(你不需要管理键的列表),而且客户端非常灵活,不需要进行额外的调用来预配置改变列表资源。
例子 https://base.com/businessRelationships?filteredKeys=123,234,345