私はrest apiが古典的なCRUDからドメインドライブデザイン(DDD)にリファクタリングされているプロジェクトを持っています。課題の1つは、エンドポイントが同じ動詞とペイロードを使用して同じままでなければならないことです。REST API経由でDDDを使用してPOSTによる部分更新を行う方法は?
私は(私はPOST順/更新/ 1048をお持ちの場合
{
"id":1048,
"order_total":100.11,
"is_paid":true,
"order_status":"active",
"items":[
{
"id":5000,
"name":"baseball hat"
},
{
"id":5001,
"name":"baseball bat"
}
]
}
は今、私はPOSTを経由して完全または部分的な要求モデルを送っどこGET /受注/ 1048に戻りたとえば、次のような状況
を持っていませんPOSTは冪等ではないため、PUT要求全体モデルを常に提供するため)、提供されたデータに基づいて、特定のドメインの動作をトリガーしたい。
a)ステータスケース1を更新する。
{
"id":1048,
"order_total":100.11,
"is_paid":true,
"order_status":"cancel",
"items":[
{
"id":5000,
"name":"baseball hat"
},
{
"id":5001,
"name":"baseball bat"
}
]
}
b)の更新状況ケース2
{
"id": 1048,
"order_status": "cancel"
}
C)更新商品ケース
{
"id":1048,
"items":[
{
"id":5000,
"name":"baseball hat"
}
]
}
d)の更新状況+アイテム
{
"id":1048,
"order_status":"cancel",
"items":[
{
"id":5000,
"name":"baseball hat"
}
]
}
私の計画は、アプリケーション層とドメイン層の内部で次のことを行うことです。
- トリガ選択行動(複数可)
- をトリガーするためにどの行動(複数可)を決める
- (比較ロジックを開発する)要求本体に設けられたデータと既存のドメインのデータを比較
- ドメインデータを取得振る舞いが有効であれば、ドメインデータ全体を保持する
これはコンマを送信していないので、実際には「DDD準備要求」ではありませんPATCHを使ってndsを呼び出すことができますが、これは私が考えることができる唯一の回避策です。私は正しいことを知っていますか?
[残りのAPIとDDD](https://stackoverflow.com/questions/35700344/rest-api-and-ddd)の可能な複製 – guillaume31
*「これはPATCHを使用してコマンドを送信していないので実際にはDDDではありません」 * - そのDDDはいつからですか? – guillaume31
送信コマンド何を更新しようとしていますか?DDDを準備してから、処理する必要がある大量のデータを送信し、使用するコマンドを決定します。いいえ? – mko