1

我一直在努力解决通过 REST api 表示结帐/签入系统的问题。

给你一个小例子,我们的系统处理节点,我们需要一种方法让一个用户能够锁定这个节点,然后对其进行更改,然后提交它。

所以我在想类似的东西

  • /nodeId(这是节点的基本位置,并提供节点的最新签入修订只读视图)
  • /nodeId/edited(张贴到这里会创建文档的编辑版本,这是结帐,gettting 获取编辑后的版本,然后进行更改)

现在我想代表签入,我想说/nodeId/edited再次发布将提交已编辑的文档,但是我们是,给发布两个不同的含义。我可以创建另一个签入端点,但这看起来很乱?另一种选择是对 /nodeId 进行 POST 以创建编辑后的版本,但这似乎又令人困惑。

4

1 回答 1

2

锁定/签出资源,POST使用/nodeId 部分文档{"locked":"true"}。服务器必须处理资源状态并检查资源是否可以被锁定等。服务器可以回答204 No Content锁定409 Conflict是否成功以及锁定是否不可能。

解锁/签入锁定的资源,POST/nodeId使用部分文档{"locked":"false", "someKey":"someValue", ...}。服务器必须处理资源状态,检查资源是否被锁定,并使用POSTed 数据更新它。204 No Content同样,如果解锁成功,服务器可以回答,如果不成功409 Conflict

编辑:添加了可能的 HTTP 状态代码。

编辑 2: REST 中没有像 SOAP 中的“端点”。你操纵资源,你不调用方法。

于 2012-09-07T10:42:08.463 回答