私はいくつかのリソースの作成と更新を許可するREST APIを持っています。不変のリソースをREST APIに置き換えてください
POST /cars
POST /cars/:id
車は、とりわけ、サーバによって作成時に生成されID
フィールドがあります。
これらの車を使用するビジネスプロセスでは、車の「リビジョン」をそれぞれ不変であるとみなし、REST APIを介して車に変更を加えて新しい「改訂版」を作成できるようにしたいと考えています。これらのリビジョンはタイムライン上にあり、変更がいつ行われるかに応じて、ビジネスプロセスはそれを使用するかどうかを決定します。
私はこれに関するいくつかの考え方とそれをどうやって行くのか聞いてみたいと思います。
もちろん、ちょっとハッキリな解決策は、車を不変に保つことです。IDは、言い換えると "改訂"ハンドルです。更新により、異なるIDを持つ新しい車が得られます。もちろん、IDを持つAPIを呼び出して別のIDを返すのはやや奇妙です。
意見や提案はありますか?ありがとう! StackExchangeは、質問と回答全体でリビジョンのものを使用する方法の改正を検討する提案を見て、後に、私は事実上のオブジェクトが持っているという点でcars
とrevisions
に対処する方法を疑問に思う
UPDATE
OK、フィールドと方法を見つける方法ID
で特定される特定の自動車の最新バージョン。例えば
、車があります
car:
id: 1
brand: Toyota
model: Yaris
price: 1000
のは、例えば、価格が時間とともに変化することができ、これは車の改正によって捕獲されなければならないとしましょう:
revision:
car_id: 1
revision: 1
price: 900
はのは、私を言ってみましょう最新の車をID 1で手に入れたいのですが、トヨタヤリスに1000の代わりに900を支払う必要があります。データベースの期待値、つまり2行と最新のリビジョン(見つかった場合)が他のものを上書きします?これはどのように作動しますか?
アップデート2
OK、そう改訂は単に歴史を追跡することで、最新の情報はcars
エントリ自体です。私。更新が行われると、車のエントリを更新するだけでなく、以前の値で新しいリビジョンが作成されます。どちらもトランザクションで行われます。
プロセスの説明や、最新の質問と回答をどのように表示して、どのように表示すると、このページ? – murrekatt
@murrekatt便宜上、あなたのAPIは最新のリビジョン:/ cars/{ids}/revisions/latest'を指すURIを提供することができます。 –
はい、最新のものを返すべきですが、最新のものは "改訂版"でありポストではなく、どうやって一緒に結びつけられているのかが不思議です。あなたは知っていますか? – murrekatt