RESTful APIを介して公開する必要のあるオブジェクト階層があり、URLをどのように構造化し、何を返す必要があるのかわかりません。ベストプラクティスが見つかりませんでした。
動物から受け継いだ犬と猫がいるとしましょう。犬と猫のCRUD操作が必要です。また、動物全般の手術もできるようになりたいです。
私の最初のアイデアは、次のようなことをすることでした。
GET /animals # get all animals
POST /animals # create a dog or cat
GET /animals/123 # get animal 123
/ animalコレクションは、まったく同じ構造を持たないオブジェクト(犬と猫)を返したり受け取ったりする可能性があるため、「一貫性がない」ようになりました。異なる属性を持つオブジェクトを返すコレクションを持つことは「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
この場合、返される動物にはすべての動物に共通の属性のみが含まれ、犬固有および猫固有の属性は削除されます。これにより、詳細は少なくなりますが、すべての動物を取得できます。返される各オブジェクトには、詳細で具体的なバージョンへのリンクが含まれている可能性があります。
コメントや提案はありますか?