我对REST的怨恨:我是在这里还是我错过了什么?

时间:2013-06-02 16:36:34

标签: sql rest design-patterns xml-rpc

我正在设计一个存储销售订单的以数据为中心的应用程序 在服务器上。客户可以随时决定修改销售 订购,也许是因为他们接到了购买者的电话 请求与之相关的添加,修改和删除 销售订单。因此服务器上的每个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和多个POSTS 是不切实际的。

因此,当HTTP操作不对应于SQL操作时 以一种简洁的方式,REST的全部目的是什么,而不是 XML-RPC ???我误解了REST吗?

感谢您的意见。

1 个答案:

答案 0 :(得分:1)

  

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

你确实误解了REST。 REST表示REpresentational State Transfer。在REST中,您无法通过发送删除订单行的命令来修改订单。这意味着发送无代表性的州。

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