小编use*_*232的帖子

如何设计REST API,需要资源创建和修改才能被另一方批准

我必须为需要双重控制的安全敏感资源设计REST服务.设计实现双重控制的REST服务的优雅方法是什么?

双重控制

对于双重控制,我的意思是,如果多人(例如2人)参与变更,则变更才会生效.

例如,我有一个名为userProfile的资源.它定义了允许用户执行的所有操作.如果有人想要更改此类个人资料,则可以建议对其进行更改.然后必须验证此更改.此验证的结果是"批准"或"拒绝".一旦变更获得批准,它就会生效.

设计

我目前有一个userProfile资源和一个userProfileChangeProposal资源.

创建一个创建userprofile的提议

POST /userprofiles
Run Code Online (Sandbox Code Playgroud)

这将返回userprofile的ID.现在可以使用{id}进行验证

PUT /userprofiles/{id}/changeproposal
Run Code Online (Sandbox Code Playgroud)

删除或更新userprofile需要再次提交,因此:

DELETE /userprofiles/{id}
PUT /userprofiles/{id}
Run Code Online (Sandbox Code Playgroud)

可以通过以下方式再次验证这些更改:(对于用户配置文件,同时只能有1个提案)

PUT /userprofiles/{id}/changeproposal
Run Code Online (Sandbox Code Playgroud)

问题

我正在努力的事情是,其余的操作似乎在userprofile资源上运行,但事实上他们不这样做.删除不会直接删除资源.它会创建一个删除它的提议.此外,此方法不允许直接删除用户配置文件.

另一方面,如果通过更改提议进行所有更改,则所有创建/删除/更新操作都是正确的

CREATE /userprofilechangeproposal
Run Code Online (Sandbox Code Playgroud)

我没有在互联网上看到有关双控制设计的任何内容.最接近的是有人首先创建ORDER资源,并且只有在订单被批准后才会创建实际的CAR.

任何人都有最佳做法?

rest

2
推荐指数
1
解决办法
587
查看次数

标签 统计

rest ×1