gpt4 book ai didi

java - 如何使用 REST API 为每个用户创建不同的资源

转载 作者:行者123 更新时间:2023-11-30 01:54:25 25 4
gpt4 key购买 nike

在一个学校项目中,我们用 Java 编写了一个游戏实现,并通过 Angular 显示实际的游戏。我们对代表实际游戏的游戏对象进行了编码,并创建了一个“GameResource”类,它允许我们通过 REST 调用来操作此类中的 Game 对象参数,如下所示:

@PUT
@Path("moove/{x1}/{x2}/{y1}/{y2}")
@Produces(MediaType.APPLICATION_JSON)
public Response play(@PathParam("x1") final int oldX, @PathParam("x2") final int newX, @PathParam("y1") final int oldY, @PathParam("y2") final int newY) {
if (game.getBoard().getPiece(oldX, oldY).hasBall()) {
game.play(new MoveBall(oldX, oldY, newX, newY));
} else {
game.play(new MovePion(oldX, oldY, newX, newY));
}
game.flushUndo();
if (game.isFinished().isPresent()) {
return Response.ok().entity(game.isFinished().get()).build();
}
return Response.ok().entity(game).build();
}

如您所见,我们只是在游戏对象上调用方法并返回游戏,以便我们可以通过 Angular 显示它。但问题是,这个对象是每个用户共享的,这意味着两个人不能同时玩。

我已经编写了一个多线程“类似云”的服务,该服务使用套接字并在每次有人连接到该套接字时启动一个新线程来处理新用户,但我不知道如何使用 REST API 甚至不知道如何做到这一点在这种情况下我是否应该使用 REST API。非常欢迎任何建议,谢谢

最佳答案

你需要很多game每个用户的对象。这意味着您需要一个有状态的 Rest 服务,尽管它违背了 Rest 的主要思想( Statelessness )。

无论如何你都可以implement stateful通过添加其中一种身份验证方法。详情请参阅此处:RESTful Authentication .

然后你可以将所有游戏存储在某种数据结构中,例如 Map<User, Game>并为每个用户获取必要的游戏。

查看有关休息状态的更多信息:If REST applications are supposed to be stateless, how do you manage sessions?

关于java - 如何使用 REST API 为每个用户创建不同的资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54961727/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com