API Gateway 中的簡單計算器 API
我們的簡易計算器 API 公開三種方法 (GET、POST、GET) 來呼叫簡易計算器的 Lambda 函數。此 API 的圖形呈現如下:
![所產生開發套件的簡易計算器 API](images/simple-calc-api-console-hierarchy-new-console.png)
這三種方法顯示提供後端 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 開發套件方法名稱是 getABOp
、POST /
的預設開發套件方法名稱是 postApiRoot
,而 GET /{a}/{b}/{op}
的預設開發套件方法名稱是 getABOp
。個別開發套件可能會自訂慣例。請參閱開發套件特定方法名稱之所產生開發套件來源中的文件。
您可以且應該在每個 API 方法上指定 operationName 屬性,來覆寫預設軟體開發套件方法名稱。您可以在使用 API Gateway REST API 建立 API 方法或更新 API 方法時這麼做。在 API Swagger 定義中,您可以設定 operationId
以達到相同的結果。
顯示如何使用此 API 之 API Gateway 所產生的開發套件來呼叫這些方法之前,讓我們短暫回想一下如何設定它們。如需詳細說明,請參閱在 APIs Gateway 中開發 REST API。如果您初次使用 API Gateway,請先參閱選擇 AWS Lambda 整合教學課程。
建立輸入和輸出的模型
為了在開發套件中指定強型別輸入,我們建立 API 的 Input
模型。為了描述回應內文資料類型,我們建立 Output
模型與 Result
模型。
建立輸入、輸出和結果的模型
-
在主導覽窗格中,選擇模型。
-
選擇建立模型。
-
對於名稱,輸入
input
。 -
針對內容類型,輸入
application/json
。如果找不到相符的內容類型,則不會執行請求驗證。若要使用相同的模型,而不論內容類型為何,請輸入
$default
。 -
針對模型結構描述,輸入下列模型:
{ "$schema" : "$schema": "http://json-schema.org/draft-04/schema#", "type":"object", "properties":{ "a":{"type":"number"}, "b":{"type":"number"}, "op":{"type":"string"} }, "title":"Input" }
選擇建立模型。
重複以下步驟來建立
Output
模型和Result
模型。針對
Output
模型,為模型結構描述輸入下列內容:{ "$schema": "http://json-schema.org/draft-04/schema#", "type": "object", "properties": { "c": {"type":"number"} }, "title": "Output" }
針對
Result
模型,為模型結構描述輸入下列內容。將 API IDabc123
取代為您的 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 查詢字串參數
在方法請求區段中,針對根 (
/
) 資源上的GET
方法,選擇編輯。選擇 URL 查詢字串參數,然後執行下列動作:
選擇新增查詢字串。
對於名稱,輸入
a
。將必要和快取保持關閉。
讓快取保持關閉。
重複相同的步驟,並建立名為
b
的查詢字串和名為op
的查詢字串。選擇儲存。
設定承載做為後端輸入的資料模型
針對 POST /
方法,我們建立 Input
模型,並將它新增至方法請求來定義輸入資料的形狀。
設定承載做為後端輸入的資料模型
在方法請求區段中,針對根 (
/
) 資源上的POST
方法,選擇編輯。選擇請求內文。
選擇 Add model (新增模型)。
針對內容類型,輸入
application/json
。針對模型,選取輸入。
選擇儲存。
使用此模型,將 Input
物件執行個體化,您的 API 客戶就可以呼叫開發套件來指定輸入。沒有此模型,您的客戶就需要建立字典物件來代表 Lambda 函數的 JSON 輸入。
設定後端結果輸出的資料模型
針對所有這三種方法,我們建立 Result
模型,並將它新增至方法的 Method Response
來定義 Lambda 函數所傳回輸出的形狀。
設定後端結果輸出的資料模型
選取 /{a}/{b}/{op} 資源,然後選擇 GET 方法。
-
在方法回應索引標籤上的回應 200 下,選擇編輯。
-
在請求內文下,選擇新增模型。
-
針對內容類型,輸入
application/json
。 -
針對模型,選取結果。
-
選擇儲存。
使用此模型,您的 API 客戶可以讀取 Result
物件的屬性來剖析成功的輸出。沒有此模型,客戶就需要建立字典物件來代表 JSON 輸出。