0

リレーションのコレクション(各リレーションにメタデータがない場合)に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操作を表現するためのより良い方法はありますか?私はこれについてすべて間違っていますか?

4

1 に答える 1

0

目的のベータ版のコレクションを取得することから始めて、2つの部分からなる呼び出しに落ち着きました。

GET /alphas/{alpha_id}/betas?attribute={value}

...次に、beta_idsのリストを次の宛先にPOSTします。

POST /alphas/{alpha_id}/betas
于 2013-01-09T21:08:29.227 に答える