リレーションのコレクション(各リレーションにメタデータがない場合)にCRUD操作を適用するための規則を探しています。
次のシナリオでは、「アルファ」と「ベータ」の基本的なCRUD操作がすでにあります。PUT / GET / HEAD / DELETEの各ペアの最初のペアは、特定の「アルファ」と「ベータ」の間の関係について、かなり単純なCRUDで構成されています。このパターンを拡張して、おしゃべりを最小限に抑えて大量の関係を管理したいと思います。
PUT /alphas/{alpha_id}/betas/{beta_id}
アルファとベータの間に関係を作成する
PUT /alphas/{alpha_id}/betas?attribute={value}
任意の属性値を使用して、アルファとすべてのベータの間に関係を作成します
GET /alphas/{alpha_id}/betas
アルファに関連するベータオブジェクトのコレクションを一覧表示します
GET /alphas/{alpha_id}/betas?attribute={value}
アルファとの関係を持つベータオブジェクトのコレクションを一覧表示します。ここで、beta.attribute =value
HEAD /alphas/{alpha_id}/betas/{beta_id}
アルファとベータの関係を確認してください
HEAD /alphas/{alpha_id}/betas?attribute={value}
任意の属性と値のペアを使用して、アルファとベータの間に少なくとも1つの関係があるかどうかを確認します
DELETE /alphas/{alpha_id}/betas/{beta_id}
アルファとベータの間の関係を削除します
DELETE /alphas/{alpha_id}/betas?attribute={value}
任意の属性=値を持つアルファとすべてのベータ間のすべての関係を削除します
私の質問は、特に2番目のPUT操作のセマンティクスについてですが、これは私には少し奇妙に見えます。GET / HEAD / DELETEに見られるように、アルファとの既存の関係を持つベータのサブセットではなく、すべてのベータのセットで実際に動作しています...このPUT操作を表現するためのより良い方法はありますか?私はこれについてすべて間違っていますか?