私のプロジェクトでは、DDD方法論を使用しています。残りのAPIとDDD
プロジェクトには、集約(エンティティ)取引があります。この集合体には多くのユースケースがあります。
この集計では、残りのAPIを作成する必要があります。
標準:問題の作成と削除に問題はありません。
1)CreateDealUseCase(名前、価格、その他多くのパラメータ)。
POST /rest/{version}/deals/
{
'name': 'deal123',
'price': 1234;
'etc': 'etc'
}
2)DeleteDealUseCase(ID)
DELETE /rest/{version}/deals/{id}
しかし、どのようなユースケースの残りの部分を行うには?
- HoldDealUseCase(id、reason);
- UnholdDealUseCase(id);
- CompleteDealUseCase(id、および他の多くのパラメータ)。
- CancelDealUseCase(id、amercement、reason);
- ChangePriceUseCase(id、newPrice、reason);
- ChangeCompletionDateUseCase(id、newDate、amercement、whyChanged);
- など(合計20のユースケース)...
ソリューションは何ですか?
1)使用動詞:
PUT /rest/{version}/deals/{id}/hold
{
'reason': 'test'
}
しかし!動詞はURLで使用できません(REST理論では)。
2)使用ユースケースの後になります完成した状態():私のために個人的に
PUT /rest/{version}/deals/{id}/holded
{
'reason': 'test'
}
それは醜いです。たぶん私は間違っています?
3)すべての操作の使用1 PUT要求:
PUT /rest/{version}/deals/{id}
{
'action': 'HoldDeal',
'params': {'reason': 'test'}
}
PUT /rest/{version}/deals/{id}
{
'action': 'UnholdDeal',
'params': {}
}
バックエンドで取り扱いが困難です。 さらに、文書化することは困難です。 1つのアクションにはさまざまなバリエーションのリクエストが存在するため、特定のレスポンスに依存しています。
すべての解決策には重大な欠点があります。
私はインターネット上のRESTに関する多くの記事を読んでいます。私の特定の問題でここにいる方法はどこでもただの理論ですか?
私は答えとして次のように述べたくないので、おそらく他の人が恐ろしいアイデアの場合に意見を述べる可能性があります。 '/ rest/{version}/dealsheld /'、 '/ rest/{version}/dealscompleted/{id}'などのように、あなたはどのような状態で扱っているのか知る必要があります。そのような計画は意味をなさないでしょうか? –