これは次へのフォローアップの質問です: REST でのトランザクション?
クライアントに完全なトランザクション機能を提供する REST API を実装するにはどうすればよいでしょうか?
たとえば、クライアントが次の操作を行うトランザクションを作成したい場合:
- 1 つ以上のオブジェクトを作成します。
- 1 つまたは複数のオブジェクトを更新します。
- 1 つまたは複数のオブジェクトを削除します。
これはトランザクションの有効な要件ですが、PUT を使用して作成し、POST を更新し、DELETE を使用して削除するという REST 要件を破っているようです。
私の現在のソリューションでは、システム全体を 1 つの階層オブジェクト構造として扱い、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 要件を満たしています。
誰かがより良い解決策を見つけたかどうか知りたいです。