超媒体驱动权限适合状态相关的动态操作控制
当一个操作是否可用同时取决于用户身份、资源状态和业务规则时,由服务端通过超媒体链接动态声明可用操作,通常比前端硬编码判断更合适。
为什么重要
很多业务操作并不只取决于用户角色。例如:
- 订单能否退款,取决于用户权限、订单状态、支付状态和退款期限;
- 流程能否撤回,取决于当前节点、审批状态和发起人身份;
- 任务能否转交,取决于任务状态、组织关系和接收人条件。
如果这些条件散落在前端组件中,UI 很容易和真实业务规则不一致。超媒体驱动权限把这些条件集中到服务端计算,再把结果作为可用操作链接返回。
核心内容 / 成立机制
状态相关操作控制的关键是:
操作是否可用,是用户、资源和业务状态共同计算出来的结果。
服务端最适合持有这类判断,因为它掌握完整的权限规则、资源状态和业务约束。前端只需要消费服务端返回的可用操作集合。
这让 UI 状态更容易与 API 状态保持一致。
应用要点
- 适合退款、撤回、转交、审批、发布、归档等状态相关操作。
- 服务端应在资源表示中返回当前可用操作,而不是让前端复制业务条件。
- 对暂时不可用但需要解释原因的操作,可以考虑返回 disabled action 或不可用原因,而不只是移除链接。
- 复杂后台、工作流系统和低代码平台尤其适合采用这种模式。