REST中的复杂事务?

时间:2012-07-15 15:50:37

标签: rest transactions

这是一个跟进问题: Transactions in REST?

如何实现为其客户端提供完整交易功能的REST API?

例如,如果客户想要创建将执行以下操作的事务:

  • 创建一个或多个对象。
  • 更新一个或多个对象。
  • 删除一个或多个对象。

虽然这是对事务的有效要求,但它似乎打破了REST要求,使用PUT创建,POST更新和DELETE删除。

我目前的解决方案是将整个系统作为一个分层对象结构处理并使用POST操作。例如:

POST /system
{
    "Users" : [
        {
            "ID":"123",
            "name":"bob"   
            // update the user with ID matching 123, 
            // set his name to "bob"
        },
        {
            "ID":"456",
            "delete":"true"
            // trigger a delete on user with ID 456
        }
    ],
    "Products" : [
        {
            "name":"foo"   
            // create a product named "foo" since no ID is provided
        },
    ]
}

到目前为止,这满足了大多数REST要求,除了“删除”标志,它不是真正的数据。

我很想知道是否有人找到了更好的解决方案。

1 个答案:

答案 0 :(得分:0)

同意Jan你需要在服务器端进行处理。但是,对于可靠性很差的代码,我的体验非常糟糕。我对Restful应用程序的体验表明,坚持PUT& RESTFul体系结构中的DELETE谓词非常困难,因为各种浏览器版本支持对它们来说都是有限的。