RESTful API を介して公開する必要があるオブジェクト階層があり、URL をどのように構成し、何を返すべきかがわかりません。ベストプラクティスが見つかりませんでした。
動物から継承した犬と猫がいるとしましょう。犬と猫に対する CRUD 操作が必要です。動物全般の手術もできるようになりたいです。
私の最初のアイデアは、次のようなことをすることでした:
GET /animals # get all animals
POST /animals # create a dog or cat
GET /animals/123 # get animal 123
問題は、/animals コレクションが、まったく同じ構造 (犬と猫) を持たないオブジェクトを返したり取得したりできるため、「一貫性がない」ことです。異なる属性を持つオブジェクトを返すコレクションを持つことは「RESTful」と見なされますか?
別の解決策は、次のように、具象型ごとに URL を作成することです。
GET /dogs # get all dogs
POST /dogs # create a dog
GET /dogs/123 # get dog 123
GET /cats # get all cats
POST /cats # create a cat
GET /cats/123 # get cat 123
しかし今、犬と猫の関係は失われています。すべての動物を取得したい場合は、犬と猫の両方のリソースを照会する必要があります。動物のサブタイプが新しくなるたびに、URL の数も増えます。
別の提案は、これを追加して 2 番目のソリューションを拡張することでした。
GET /animals # get common attributes of all animals
この場合、返される動物には、すべての動物に共通の属性のみが含まれ、犬固有の属性と猫固有の属性が削除されます。これにより、詳細は少なくなりますが、すべての動物を取得できます。返された各オブジェクトには、詳細で具体的なバージョンへのリンクが含まれている場合があります。
コメントや提案はありますか?