这是一个后续问题: REST 中的事务?
如何实现一个 REST API,为它的客户提供完整的事务能力?
例如,如果客户想要创建一个将执行以下操作的事务:
- 创建一个或多个对象。
- 更新一个或多个对象。
- 删除一个或多个对象。
虽然它是事务的有效要求,但它似乎打破了使用 PUT 创建、POST 更新和 DELETE 删除的 REST 要求。
我当前的解决方案涉及将整个系统作为一个分层对象结构处理并使用 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 要求,除了“删除”标志,它并不是真正的数据。
我很想知道是否有人找到了更好的解决方案。