1

我正在设计一个以数据为中心的应用程序,它将销售订单存储在服务器上。在任何时候,客户可能决定修改销售订单,可能是因为他们收到了来自购买者的电话,请求添加、修改和删除与销售订单相关的内容。因此,服务器上的每个 Sale 数据库表都有一个 SaleItems 明细表,其中存储了销售项目。

现在 REST 方法 GET、POST、PUT 和 DELETE 应该大致对应于 SQL SELECT、INSERT、UPDATE 和 DELETE 语句,当相应的对象发生变化时要在服务器上执行。

如果我使用 REST,当订单更改时,我必须执行 PUT 来更新销售项目,从而调用 UPDATE 语句。但是 PUT 还需要: 1. 删除所有显示为采购项目的旧项目及其项目数量和项目价格,然后 2. 插入所有新项目及其数量和价格。因此,一个 PUT 实际上对应于一个 UPDATE、DELETE 和多个 INSERT(我想不出另一种更好的方法来做到这一点)。所以,休息这么多。

我无法将 SQL UPDATE、DELETE 和 INSERT 分开,因为操作需要是原子的并在单个事务中运行,所以我不能执行 HTTP PUT、DELETE 和多个 POST,因为那是不切实际的。

那么,当 HTTP 操作与 SQL 操作没有整齐的对应时,REST 与 XML-RPC 相对的全部目的是什么?我误解了 REST 吗?

感谢您的意见。

4

1 回答 1

1

我无法将 SQL UPDATE、DELETE 和 INSERT 分开,因为操作需要是原子的并在单个事务中运行

您确实误解了 REST。REST 表示代表性状态转移。在 REST 中,您不能通过发送删除订单行的命令来修改订单。那将意味着发送无代表性的状态。

相反,您发送包含您所做的所有更改的完整订单。换句话说,您传输订单状态的表示。以这种方式发送更改是事务性的。

于 2013-06-02T16:58:11.607 回答