【Web Design The Missing Link】Modeling Actions

您可能会遇到的另一种情况是要触发动作。假设您有用于标识某个过程的URL,并且希望能够启动,停止或暂停该过程。 在这种情况下,许多设计师都采用面向动词的,类似于RPC的API设计,但是有些设计选项仍然忠实于基于名词的Web实体模型。 一种是提供流程的状态属性,并允许客户端将其设置为启动,停止或暂停。另一个选择是允许客户端将操作请求发布到相关的URL。例如,流程资源可能具有一个名为actionRequests的属性,其值为URL,如下所示:

{
	“id”:”https://example.org/process/123456”, 
	“kind”: “Process”,
	“actionRequests”: “https://example.org/processes/123456/requests”
}

客户端可以将StopRequest,StartRequest,PauseRequest或ResumeRequest实体发布到https://example.org/processes/123456/requests。 如果您希望能够记录谁对流程做了什么以及何时进行记录,则此模型很有用,因为POST可以创建一个真正的持久实体来保存该信息。 该模型在处理可能需要花费一些时间的请求时也很有用,因为POST可以立即返回资源,并且可以随后检查该实体的状态以确定请求的进度。

最后,此设计有一个变体,它允许客户端立即知道在特定时间点哪些请求有效。 如果我们为每种请求类型提供单独的属性,而不是提供单个actionRequests属性,则可以通过判断该属性是否存在,来有效地在特定时间传达特定请求。 如果该过程尚未开始,则其表示可能如下所示:

{
	“id”:”https://example.org/process/123456”, 
	“kind”: “Process”,
	“state”: “initial”,
	“startRequests”: “https://example.org/process/123456/requests”
}

如果该过程已经开始,则其表示可能如下所示:

{
	“id”:”https://example.org/process/123456”, 
	“kind”: “Process”,
	“state”: “running”,
	“pauseRequests”: “https://example.org/process/123456/requests”, 
        “stopRequests”: “https://example.org/process/123456/requests”
}

如果该进程已暂停,则其表示可能如下所示:

{
	“id”:”https://example.org/process/123456”, 
	“kind”: “Process”,
	“state”: “pause”,
	“resumeRequests”: “https://example.org/process/123456/requests”, 
    “stopRequests”: “https://example.org/process/123456/requests”
}

这些属性的值是相同的URL还是不同的URL无关紧要。我们从Siren那里学到了这项技术,您可能会想使用它的更详细版本。
(备注:Siren地址 https://github.com/kevinswiber/siren

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值