ゲーム内のプレイヤーがサーバーにコマンドを送信できるようにする、RESTfulなサービスを想像してください。このコマンドを表すオブジェクトがPlayerCommandと呼ばれ、次のようになり可能性があります:プレーヤー、ゲーム、およびコマンドは、サービスに/リソースオブジェクトされている複雑なリソースをコレクションに追加するベストプラクティス?
PlayerCommand:
Player player;
Game game;
Command command;
String param1;
...etc.
。プレイヤーがこれらを追加できるようにPlayerCommandリソースを公開すると、PlayerCommandリソース(POST/playerCommand)の整形式表現を投稿するために、PlayerCommandエンドポイントを公開する方が良いでしょうか?あるいは、PlayerCommandオブジェクトの複雑さのいくつかを、パスに依存するリソースのIDを入れるだけで、光沢を持たせることをお勧めします。 POST/player/{id}/game/{id}/playerコマンド?後者のように、クライアントの方が簡単で、オブジェクトの表現をより細かく(基本的にはコマンドと文字列パラメータのみ)渡し、サーバ側でIDに基づいて依存オブジェクトを作成させることができます。
基本的に、ネストされた/複雑なリソースに対してCRUD操作を公開する場合、ここではベストプラクティスは何ですか?
エンティティ間の関係をエンドユーザーに公開しないという答えはありますか?この場合のオブジェクトはPlayerCommandと呼ばれ、プレーヤをゲームのコマンドにマッピングするためです。しかし、それはデータモデルから出てくる実装の詳細のように思えます。クライアントはこれらの種類のマッピングを心配する必要はなく、代わりにルートエンティティ(Player、Game、Command)に制限し、サーバー側が関係を処理できるようにする必要がありますか?これは、私が言及した第2の解決策を論じるだろう。 –