我必须为需要双重控制的安全敏感资源设计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 ×1