想象一下,RESTful服务可以让玩家在游戏中向服务器提交命令。它表示该命令的对象可能被称为PlayerCommand和看起来像:将复杂资源添加到集合的最佳实践?
PlayerCommand:
Player player;
Game game;
Command command;
String param1;
...etc.
凡播放器,游戏机,和命令也都在服务对象/资源。当我公开PlayerCommand资源以允许玩家添加这些资源时,最好公开一个PlayerCommand端点,从而他们可以发布PlayerCommand资源的良好表示形式,即POST/playerCommand?或者,让它们通过将相关资源的id放在路径中,例如让它们掩饰PlayerCommand对象的一些复杂性,会更好。 POST/player/{id}/game/{id}/playerCommand?看起来后者对于客户来说更容易,让它们传递对象的稀疏表示(基本上只是命令和字符串参数),然后让服务器端根据ID构建依赖对象。
基本上,当在嵌套/复杂资源上暴露CRUD操作时,这里的最佳实践是什么?
答案沿线是否将实体与最终用户之间的关系暴露出来?这种情况下的对象称为PlayerCommand,因为它将玩家映射到游戏中的命令。但是这看起来像是数据模型的实现细节;客户端可能不必担心这些映射,而是将自己限制在根实体(Player,Game,Command)并让服务器端处理关系?这将为我提到的第二个解决方案争论。 –