RESTAPI:资源的组或视图
我的RESTAPI有许多RESTAPI:资源的组或视图,api,rest,restful-architecture,Api,Rest,Restful Architecture,我的RESTAPI有许多/资源,需要将它们的权重分配到/存储桶 例如,GET/bucket/1给出如下内容: { "id": 1, "name":"BucketOne", "resources": [ { "id": 1, "weight": 0.03 }, { "id": 234, "weight": 0.23 },
/资源
,需要将它们的权重分配到/存储桶
例如,GET/bucket/1
给出如下内容:
{
"id": 1,
"name":"BucketOne",
"resources": [
{
"id": 1,
"weight": 0.03
},
{
"id": 234,
"weight": 0.23
},
{
"id": 23,
"weight": 0.5
},
...
],
...
}
资源
以树状结构聚合为资源组
。定义了几种策略
,以简化资源
分配到存储桶中的输入,允许仅为资源组
指定权重
模型如下:
strategy (1)----(*) resourceGroup (1)----(*) resource
我想使用策略
启用桶资源分配的定义,以简化用户交互并抽象分配策略
对于给定的策略,应该能够在resourceGroup
级别上指定资源权重分配。然后,处理请求的后端服务将负责在资源级别上进行资源分配
该行为可与可编辑的实体化视图进行比较
不过,我不确定在RESTAPI中实现这一点的最佳实践是什么。
以下是我看到的可能性(按优先顺序列出):
资源组
视为单独的资源
/bucket/1/分配策略/策略名称/资源组
因此,GET/bucket/1/allocation strategies/strategy name/resourceGroups
将仅检索资源组的列表及其权重
将PUT
放在同一URI中可以直接使用ResourceGroup更改此策略的资源分配
优点:这个请求仍然是无状态的,因为我们发送了所有必需的资源组/权重
缺点:resourceGroups
和实际的resources
权重映射需要由服务实现保持同步。i、 e.对资源组
的更改需要传播到资源
,反之亦然。这些副作用可以接受吗
resourceGroups
用作伪resources
,需要将两个特殊属性isGroup
和strategyId
添加到这些伪资源中,并将resourceGroupId
添加到每个叶资源中
GET/bucket/1/strategy?=strategy name
将只返回资源组及其权重
但要更新此桶分配,需要执行以下操作:
PUT/bucket/1/
仅使用resourceGroups
优点:resourceGroups
组由服务实现的同一部分处理,这可能使resourceGroups
和资源
之间的同步更容易。尽管如此,我不喜欢发送PUT请求来更新资源的一部分,而实际上是更新许多其他部分。在我看来这是一个糟糕的模式
缺点:API不再是无状态的,因为PUT请求只发送资源的一部分
我将非常感谢你的想法和评论。提前谢谢。我想帮忙,我看了问题2遍,但是你的领域(或你对它的描述)太复杂了。@AdamSiemion:谢谢你花时间阅读我的问题。恐怕我弄错了。假设方法1是正确的,那么问题是:“如果resourceA在发布到/resourceB的帖子上被更新了,可以吗?”根据其他问题,像这样是完全可以的。过几天我将删除这个问题。