如果有一个 REST 资源我想监视来自其他客户端的更改或修改,那么最好(也是最 RESTful)的方法是什么?
我这样做的一个想法是通过提供特定资源来保持连接打开,而不是在资源不(尚)存在时立即返回。例如,给定资源:
/game/17/playerToMove
对此资源的“GET”可能会告诉我轮到我的对手移动了。与其不断轮询此资源以找出轮到我移动的时间,我可能会记下移动编号(例如 5)并尝试检索下一步:
/game/17/move/5
在“正常”REST 模型中,对此 URL 的 GET 请求似乎会返回 404(未找到)错误。但是,如果相反,服务器保持连接打开,直到我的对手下棋,即:
PUT /game/17/move/5
然后服务器可以返回我的对手放入该资源的内容。这既可以为我提供我需要的数据,也可以为我的对手何时移动而不需要轮询提供一种通知。
这种方案是 RESTful 的吗?还是它违反了某种 REST 原则?