2016-07-16 57 views
3

我有兩個資源,遊戲和玩家,都具有crud功能。 這些應該是在相同的無服務器的服務?我想分開它們,但是如何將它們放入同一個API網關中?無服務器框架v1 - 一個服務中的多個資源

+0

所以,你想他們是2個獨立的項目?爲什麼不將這些函數放置在無服務器項目的不同目錄中? – arjabbar

回答

0

無服務器框架項目部署單個API網關。所以如果你希望它在不同的API網關中,你需要單獨的無服務器框架項目。

根據您所做的服務的大小,它可能是有意義的,也可能不是。

合併這兩個API網關上漲,您可以使用API​​網關自定義域和基於代理的路徑不同的API網關和階段上的要求,保持一個單獨的域名爲他們所有。

0

在你的例子中,你會想讓他們在同一個無服務器框架。我會在src/controllers中創建兩個文件player.jsgame.js來分離出邏輯。

您可以設置無服務器具有以下YAML文件做你想要的是使用無服務器部署lambda表達式,但手動設置API網關到端點鏈接到lambda表達式

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 
0

的一種方式。

這裏有規定在無服務器的限制:https://serverless.com/framework/docs/providers/aws/guide/services/

凡指出:

目前,每個服務將創建AWS API網關一個單獨的REST API。由於AWS API網關的限制,每個REST API只能有一個自定義域。如果您計劃製作大型REST API,請記下這一限制。此外,修復工作正在進行中,並且是重中之重。

根據我們的經驗,我們設法在我們的客戶中爲服務提供不同的API和路由對象。

要決定他們是否應該在相同的無服務器服務,你需要進入建模。在我們的案例中,我們回答以下問題:

  1. 實體是否有關聯?
  2. 實體和方法是否會以相同的速率更改?
  3. 消費者是否會消費一套實體而不消費另一套實體?

當你改變遊戲,你要改變的球員,等?

此鏈接可以幫你回答:https://martinfowler.com/articles/microservices.html