3

我有两个资源,游戏和玩家,都有 crud 功能。这些应该在同一个无服务器服务中吗?我想将它们分开,但是如何将它们放在同一个 api 网关中?

4

3 回答 3

0

无服务器框架项目部署单个 API 网关。因此,如果您希望它位于不同的 API 网关中,则需要单独的无服务器框架项目。

根据您正在制作的服务的规模,它可能有意义,也可能没有。

要合并两个更高级别的 API 网关,您可以使用 API 网关自定义域并根据不同 API 网关和阶段的路径代理请求,为它们保留一个域。

于 2016-09-01T12:53:09.320 回答
0

一种方法是使用无服务器来部署 lambda,但手动设置 API Gateway 以将端点链接到 lambda。

此处说明无服务器存在限制:https ://serverless.com/framework/docs/providers/aws/guide/services/

它在哪里声明:

目前,每项服务都将在 AWS API Gateway 上创建一个单独的 REST API。由于 AWS API Gateway 的限制,每个 REST API 只能有一个自定义域。如果您计划制作大型 REST API,请注意此限制。此外,修复工作正在进行中,并且是重中之重。

根据我们的经验,我们设法在我们的客户端中拥有具有不同 API 和路由对象的服务。

要决定它们是否应该在同一个无服务器服务中,您需要进入建模。在我们的案例中,我们回答以下问题:

  1. 实体是否相关?
  2. 实体和方法会以同样的速度变化吗?
  3. 消费者是否会消费一组实体而不消费另一组?

当你改变游戏时,你会改变玩家等吗?

这个链接可以帮助你回答这个问题:https ://martinfowler.com/articles/microservices.html

于 2017-02-22T20:42:19.947 回答
0

在您的示例中,您希望将它们保留在相同的无服务器框架中。我将创建两个文件player.jsgame.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
于 2017-02-19T17:27:51.980 回答