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