Java “如何正确地建造”;PUT方法";“和做”;实习生申请;?

Java “如何正确地建造”;PUT方法";“和做”;实习生申请;?,java,spring,rest,httprequest,put,Java,Spring,Rest,Httprequest,Put,我不熟悉Spring和Java(我可能不会使用正确的词汇,尤其是英语),我正在尝试建立一个小型数据库。但是我对PUT方法的语法有问题。 (目前一切正常) 因此,我有一个名为GameEntity的公共类,它包含一个id、一个名称和一个名为PlayerEntity的对象列表 (为了看得更清楚,我从stackoverflow post中删除了导入内容) 公共类游戏实体{ @身份证 @生成值 私有整数id; 私有字符串名称; @独身癖 私人名单玩家; 公共游戏实体(){} 公共整数getId(){ret

我不熟悉Spring和Java(我可能不会使用正确的词汇,尤其是英语),我正在尝试建立一个小型数据库。但是我对PUT方法的语法有问题。 (目前一切正常)

因此,我有一个名为GameEntity的公共类,它包含一个id、一个名称和一个名为PlayerEntity的对象列表 (为了看得更清楚,我从stackoverflow post中删除了导入内容)

公共类游戏实体{
@身份证
@生成值
私有整数id;
私有字符串名称;
@独身癖
私人名单玩家;
公共游戏实体(){}
公共整数getId(){return id;}
public void setId(整数id){this.id=id;}
公共字符串getName(){return name;}
public void setName(字符串名){this.name=name;}
public List getPlayers(){return players;}
public void setPlayers(列出玩家){this.players=players;}
}
PlayerEntity对象的构建方式与GameEntity相同,只是有一个id和一个名称

以下是获取发布的映射(这与播放性的映射相同):

@RestController
公共类游戏控制器{
私人最终游戏库游戏库;
公共游戏控制器(游戏存储库游戏存储库){
this.gameRepository=gameRepository;
}
@GetMapping(“/games”)
公共列表getAllGames(){
返回此.gameRepository.findAll();
}
@后期贴图(“/游戏”)
public GameEntity createGame(@RequestBody GameEntity GameEntity){
返回此.gameRepository.save(gameEntity);
}
}
现在,我可以“POST”一个GameEntity和一个PlayerEntity,但我想将PlayerEntity创建到GameEntity中的PlayerEntity对象列表中

因此,我想我将不得不“放置创建的游戏实体”。但是我怎样才能“达到”游戏性呢?我能做一些类似内部请求的事情吗?语法可能是什么? 执行两个请求来创建两个对象并将其中一个放在另一个对象中,这是最好的方法吗? 到现在为止我还错过什么吗

我有点迷路了,任何建议都会大有帮助


提前感谢。

如果两个对象都可以独立生活,那么它们都应该有一个帖子。我想在游戏创建时,你的玩家已经存在了?在这种情况下,当您发布游戏时,您可以立即将玩家包括在其集合中

如果需要更新玩家列表,有多种方法:

  • PUT/game/{id}
    ,包括所有玩家。请注意,理想情况下,PUT应该覆盖整个资源,因此应该包括游戏的所有字段
  • PUT/game/{id}/players
    将以前的玩家列表替换为新玩家。再次-整个列表都包括在内,但现在你不必发送游戏的所有字段
  • POST/game/{id}/player
    -向游戏添加新玩家。这一个是
    POST
    ,因为这样的端点不再是幂等的。如果这样做,还必须创建
    DELETE/game/{id}/players
  • <> LI>在更复杂的情况下,您可能需要考虑<代码>补丁>代码> -它可以是非幂等的,并且可以部分地更新资源。 前3个是RESTful,最后一个不是——动词可能开始爬入URI


    一般来说,幂等式体系结构更安全、更简单,所以您应该开始考虑前2种体系结构。如果是复杂的-#3也可以。如果你认为它不起作用(例如,由于性能下降或其他因素),那么你可以考虑第四个选项。

    这正是我需要的,最后我用了你给我的第三种方法:非常感谢!
    public class GameEntity {
        @Id
        @GeneratedValue
        private Integer id;
        private String name;
        @OneToMany
        private List<PlayerEntity> players;
    
        public GameEntity() { }
    
        public Integer getId() { return id; }
        public void setId(Integer id) { this.id = id; }
    
        public String getName() { return name; }
        public void setName(String name) { this.name = name; }
    
        public List<PlayerEntity> getPlayers() { return players; }
        public void setPlayers(List<PlayerEntity> players) { this.players = players; }
    }
    
    @RestController
    public class GameController {
        private final GameRepository gameRepository;
    
        public GameController(GameRepository gameRepository) {
            this.gameRepository = gameRepository;
        }
    
        @GetMapping("/games")
        public List<GameEntity> getAllGames() {
            return this.gameRepository.findAll();
        }
    
        @PostMapping("/games")
        public GameEntity createGame(@RequestBody GameEntity gameEntity) {
            return this.gameRepository.save(gameEntity);
        }
    }