私はRESTfulなリソースベースのAPIに取り組んでおり、多くのプロパティ(30と言います)を持つ大きなエンティティ(アカウント)を持っています。アカウントには、変更可能ないくつかのプロパティがあります...
名前:これは、本人確認のためのリクエスト(電子メール)を実際に送信し、別のシステムを使用して名前を更新します。
目標節約額:クライアントが希望する金額に更新できるのは単なる数値です。
だから、ここに私の考えがありました、そしてなぜ私はそれらを好きではありません:
私は、パッチボディのアカウントエンティティを取得して、何が変更されたかを更新します...この場合、2つのプロパティ(name/savings-target)と他の変更のみを含めることができます。
更新をエンティティとして扱い、新しい更新をアカウントに投稿します。
基本的には2つですが、更新用の実際のエンティティがあり、CQRSを更新しています。更新エンティティ(現時点ではより適切な名前がないため)には、変更が完了したかどうかを示すステータスがあります。
それはやり過ぎのボートの負荷のようであり、よりきれいなAPIを用意するだけの多くの作業です。また、通常そのタイプのアーキテクチャを保証するスループットの懸念もありません。
見ての通り here
私はこれらの4つの選択肢に制限されていませんが、私が考えることができる最良の選択肢です。私は2に傾いており、検証されるか、同様の状況に遭遇した他の誰かから経験ベースのソリューションを与えられることを望んでいます。
マイクロエンドポイントの使用を検討してください。次の追加のエンドポイントを公開できます。
/accounts/{id}/name
/accounts/{id}/savings-target
名前でPOSTを有効にして、目標節約額でPUTを有効にすることができます。エンドポイントでJSONをサポートする必要すらありません。POST to単純な文字列(電子メールアドレス)を指定すると、新しいターゲット金額をPUTできます。アカウントエンドポイントの応答には、name
およびsavings-target
プロパティを含めることができます。