parent
データセットを表すリソースがあるとします。このようなもののRESTfulURL構造は非常に単純なはずです。
- GET / api/parents-すべての親のコレクションを返します
- GET / api / parents / 1-id=1の親を返します
- POST / api/parents-コレクションに新しい親を追加します
- PUT / api / parents / 1-id=1の親のデータを更新します
- DELETE / api / parents / 1-id=1の親を削除します
ここで、それぞれがリソースparent
のコレクションで構成されているとしましょう。child
子リソースIDはグローバルスコープまたはローカルスコープを持つと見なす必要がありますか?次の2つのURLが与えられていると思います。
- GET / api / parents / 1/children-親1の子のコレクションを返します
- POST / api / parents / 1/children-親1のコレクションに新しい子を追加します
しかし、GET、PUT、およびDELETEについてはどうでしょうか。次のうちどれが適切ですか?
- GET、PUT、またはDELETE / api / parents / 44 / children / 6
- GET、PUT、またはDELETE / api / parents / children / 6
child
リソースのIDの一意性の範囲に帰着するようです。IDは親アグリゲート内でのみ一意ですか?それとも、それはすべての親のすべての子供たちの間でユニークですか?一方が他方よりも正しいですか、それとも問題のリソースのID一意性スコープに依存しますか?
例1が例2よりも適切であり、id=44の親にid=6の子がない場合(たとえば、子id=6がid=9の親に属している場合)、どのHTTP応答を返す必要がありますか?