我有两个资源,游戏和玩家,都有crud功能。 这些应该是在同一个无服务器服务吗?我想把它们分开,但是我怎么把它们放在同一个api网关中呢?
答案 0 :(得分:0)
无服务器框架项目部署单个API网关。因此,如果您希望它位于不同的API网关中,则需要单独的无服务器框架项目。
根据您所提供服务的规模,它可能有意义,也可能没有。
要将两个API网关合并到更高的位置,您可以使用API网关自定义域并根据不同API网关和阶段的路径代理请求,为它们保留一个单独的域。
答案 1 :(得分:0)
在您的示例中,您希望将它们保存在同一个无服务器框架中。我会在player.js
中创建两个文件game.js
和src/controllers
来分离逻辑。
您可以使用以下YAML文件
设置无服务器functions:
player_info:
handler: src/controllers/player.info
events:
- http:
path: player # path in the url
method: get
player_create:
handler: src/controllers/player.create
events:
- http:
path: player # path in the url
method: post
player_delete:
handler: src/controllers/player.delete
events:
- http:
path: player # path in the url
method: delete
game_info:
handler: src/controllers/game.info
events:
- http:
path: player # path in the url
method: get
game_create:
handler: src/controllers/game.create
events:
- http:
path: player # path in the url
method: post
game_delete:
handler: src/controllers/game.delete
events:
- http:
path: player # path in the url
method: delete
答案 2 :(得分:0)
执行所需操作的一种方法是使用无服务器部署lambda,但手动设置API网关以将端点链接到lambdas。
此处说明了无服务器的限制:https://serverless.com/framework/docs/providers/aws/guide/services/
它声明:
目前,每个服务都将在AWS API Gateway上创建单独的REST API。由于AWS API Gateway的限制,每个REST API只能有一个自定义域。如果您计划制作大型REST API,请记下此限制。此外,修复工作正在进行中,并且是首要任务。
根据我们的经验,我们设法在客户端使用不同的API和路由对象。
要确定它们是否应该在同一个无服务器服务中,您需要进入建模。在我们的例子中,我们回答了这个问题:
当你改变游戏时你会改变玩家等吗?
此链接可以帮助您解答:https://martinfowler.com/articles/microservices.html