超媒体驱动权限适合状态相关的动态操作控制

当一个操作是否可用同时取决于用户身份、资源状态和业务规则时,由服务端通过超媒体链接动态声明可用操作,通常比前端硬编码判断更合适。

为什么重要

很多业务操作并不只取决于用户角色。例如:

  • 订单能否退款,取决于用户权限、订单状态、支付状态和退款期限;
  • 流程能否撤回,取决于当前节点、审批状态和发起人身份;
  • 任务能否转交,取决于任务状态、组织关系和接收人条件。

如果这些条件散落在前端组件中,UI 很容易和真实业务规则不一致。超媒体驱动权限把这些条件集中到服务端计算,再把结果作为可用操作链接返回。

核心内容 / 成立机制

状态相关操作控制的关键是:

操作是否可用,是用户、资源和业务状态共同计算出来的结果。

服务端最适合持有这类判断,因为它掌握完整的权限规则、资源状态和业务约束。前端只需要消费服务端返回的可用操作集合。

这让 UI 状态更容易与 API 状态保持一致。

应用要点

  • 适合退款、撤回、转交、审批、发布、归档等状态相关操作。
  • 服务端应在资源表示中返回当前可用操作,而不是让前端复制业务条件。
  • 对暂时不可用但需要解释原因的操作,可以考虑返回 disabled action 或不可用原因,而不只是移除链接。
  • 复杂后台、工作流系统和低代码平台尤其适合采用这种模式。