API Gateway 中的簡單計算器 API - Amazon API Gateway

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

API Gateway 中的簡單計算器 API

我們的簡易計算器 API 公開三種方法 (GET、POST、GET) 來呼叫簡易計算器的 Lambda 函數。此 API 的圖形呈現如下:

所產生開發套件的簡易計算器 API

這三種方法顯示提供後端 Lambda 函數輸入來執行相同操作的不同方式:

  • GET /?a=...&b=...&op=... 方法會使用查詢參數來指定輸入。

  • POST / 方法使用 {"a":"Number", "b":"Number", "op":"string"} 的 JSON 承載來指定輸入。

  • GET /{a}/{b}/{op} 方法會使用路徑參數來指定輸入。

如果未定義,則 API Gateway 會結合 HTTP 方法和路徑部分,以產生對應的軟體開發套件方法名稱。根路徑部分 (/) 稱為 Api Root。例如,API 方法 GET /?a=...&b=...&op=... 的預設 Java 開發套件方法名稱是 getABOpPOST / 的預設開發套件方法名稱是 postApiRoot,而 GET /{a}/{b}/{op} 的預設開發套件方法名稱是 getABOp。個別開發套件可能會自訂慣例。請參閱開發套件特定方法名稱之所產生開發套件來源中的文件。

您可以且應該在每個 API 方法上指定 operationName 屬性,來覆寫預設軟體開發套件方法名稱。您可以在使用 API Gateway REST API 建立 API 方法更新 API 方法時這麼做。在 API Swagger 定義中,您可以設定 operationId 以達到相同的結果。

顯示如何使用此 API 之 API Gateway 所產生的開發套件來呼叫這些方法之前,讓我們短暫回想一下如何設定它們。如需詳細說明,請參閱RESTAPIs在API閘道中開發。如果您初次使用 API Gateway,請先參閱選擇 AWS Lambda 整合教學課程

建立輸入和輸出的模型

為了在開發套件中指定強型別輸入,我們建立 API 的 Input 模型。為了描述回應內文資料類型,我們建立 Output 模型與 Result 模型。

建立輸入、輸出和結果的模型
  1. 在主導覽窗格中,選擇模型

  2. 選擇建立模型

  3. 針對名稱,輸入 input

  4. 針對內容類型,輸入 application/json

    如果找不到相符的內容類型,則不會執行請求驗證。若要使用相同的模型,而不論內容類型為何,請輸入 $default

  5. 針對模型結構描述,輸入下列模型:

    { "$schema" : "$schema": "http://json-schema.org/draft-04/schema#", "type":"object", "properties":{ "a":{"type":"number"}, "b":{"type":"number"}, "op":{"type":"string"} }, "title":"Input" }
  6. 選擇建立模型

  7. 重複以下步驟來建立 Output 模型和 Result 模型。

    針對 Output 模型,為模型結構描述輸入下列內容:

    { "$schema": "http://json-schema.org/draft-04/schema#", "type": "object", "properties": { "c": {"type":"number"} }, "title": "Output" }

    針對 Result 模型,為模型結構描述輸入下列內容。將 API ID abc123 取代為您的 API ID。

    { "$schema": "http://json-schema.org/draft-04/schema#", "type":"object", "properties":{ "input":{ "$ref":"https://apigateway.amazonaws.com/restapis/abc123/models/Input" }, "output":{ "$ref":"https://apigateway.amazonaws.com/restapis/abc123/models/Output" } }, "title":"Result" }

設定 GET / 方法查詢參數

針對 GET /?a=..&b=..&op=.. 方法,在 Method Request (方法請求) 中宣告查詢參數:

設定 GET / URL 查詢字串參數
  1. 方法請求區段中,針對根 (/) 資源上的 GET 方法,選擇編輯

  2. 選擇 URL 查詢字串參數,然後執行下列動作:

    1. 選擇新增查詢字串

    2. 針對名稱,輸入 a

    3. 必要快取保持關閉。

    4. 快取保持關閉。

    重複相同的步驟,並建立名為 b 的查詢字串和名為 op 的查詢字串。

  3. 選擇儲存

設定承載做為後端輸入的資料模型

針對 POST / 方法,我們建立 Input 模型,並將它新增至方法請求來定義輸入資料的形狀。

設定承載做為後端輸入的資料模型
  1. 方法請求區段中,針對根 (/) 資源上的 POST 方法,選擇編輯

  2. 選擇請求內文

  3. 選擇 Add model (新增模型)

  4. 針對內容類型,輸入 application/json

  5. 針對模型,選取輸入

  6. 選擇儲存

使用此模型,將 Input 物件執行個體化,您的 API 客戶就可以呼叫開發套件來指定輸入。沒有此模型,您的客戶就需要建立字典物件來代表 Lambda 函數的 JSON 輸入。

設定後端結果輸出的資料模型

針對所有這三種方法,我們建立 Result 模型,並將它新增至方法的 Method Response 來定義 Lambda 函數所傳回輸出的形狀。

設定後端結果輸出的資料模型
  1. 選取 /{a}/{b}/{op} 資源,然後選擇 GET 方法。

  2. 方法回應索引標籤上的回應 200 下,選擇編輯

  3. 請求內文下,選擇新增模型

  4. 針對內容類型,輸入 application/json

  5. 針對模型,選取結果

  6. 選擇儲存

使用此模型,您的 API 客戶可以讀取 Result 物件的屬性來剖析成功的輸出。沒有此模型,客戶就需要建立字典物件來代表 JSON 輸出。