API Gateway の単純な電卓の API
Amazon の単純な電卓の API では、3 つのメソッド (GET、POST、GET) を公開して 単純な電卓の Lambda 関数 (Calc
) を呼び出します。この API を図に示すと次のようになります。

この 3 つのメソッドは方法は異なりますが、バックエンドの Lambda 関数に入力を渡して同じ操作を行います。
-
GET /?a=...&b=...&op=...
メソッドは、クエリパラメータを使用して入力を指定します。 -
POST /
メソッドは、{"a":"Number", "b":"Number", "op":"string"}
の JSON ペイロードを使用して入力を指定します。 -
GET /{a}/{b}/{op}
メソッドは、パスパラメータを使用して入力を指定します。
API Gateway が定義されていない場合、HTTP メソッドとパス部分を組み合わせて、対応する SDK メソッド名を生成します。ルートパス部分 (/
) は Api
Root
と呼ばれます。たとえば、GET /?a=...&b=...&op=...
の API メソッドのデフォルトの Java SDK メソッド名は getABOp
、POST /
のデフォルトの SDK メソッド名は postApiRoot
、 GET /{a}/{b}/{op}
のデフォルトの SDK メソッド名は getABOp
です。個々の SDK は規則をカスタマイズすることができます。SDK 固有のメソッド名については、生成された SDK ソースのドキュメントを参照してください。
各 API メソッドで operationName プロパティを指定すると、デフォルトの SDK メソッド名を上書きできます。API メソッドを作成する場合や、API Gateway REST API を使用して API メソッドを更新する場合は、これを行うことができます。API Swagger の定義では、同じ結果を得るために operationId
を設定できます。
この API に対して API Gateway で生成された SDK を使用してこれらのメソッドを 呼び出す方法を示す前に、メソッドの設定方法を簡単に再確認しましょう。詳細な手順については、「Amazon API Gateway で REST API を作成する」を参照してください。API Gateway を初めて使用する場合は、まず Lambda 統合で API Gateway API をビルドする を参照してください。
入力と出力のモデルの作成
SDK で厳密に型指定された入力を指定するには、API の Input
モデルを作成します。

同様に、レスポンス本文のデータ型を記述するには、API Gateway で以下のモデルを作成します。
{ "$schema": "http://json-schema.org/draft-04/schema#", "type": "object", "properties": { "c": {"type":"number"} }, "title": "Output" }
および
{ "$schema": "http://json-schema.org/draft-04/schema#", "type":"object", "properties":{ "input":{ "$ref":"https://apigateway.amazonaws.com/restapis/t7dve4zn36/models/Input" }, "output":{ "$ref":"https://apigateway.amazonaws.com/restapis/t7dve4zn36/models/Output" } }, "title":"Result" }
GET / メソッドのクエリパラメータの設定
GET /?a=..&b=..&op=..
メソッドのクエリパラメータは [メソッドリクエスト] で宣言します。

バックエンドへの入力としてペイロードのデータモデルを設定
POST /
メソッドについては、Input
モデルを作成し、それをメソッドリクエストに追加して入力データの形式を定義します。

API のユーザーは、このモデルを使用して Input
オブジェクトをインスタンス化することで、SDK を呼び出して入力を指定できます。このモデルがないと、Lambda 関数への JSON 入力を表すためにディクショナリオブジェクトを作成することが必要になります。
バックエンドからの結果出力のデータモデルの設定
3 つすべてのメソッドで、Result
モデルを作成し、それをメソッドの Method Response
に追加して Lambda 関数から返される出力の形式を定義します。

API のユーザーは、このモデルを使って Result
オブジェクトのプロパティを読み取ることで、正常な出力を解析できます。このモデルがないと、JSON 出力を表すためにディクショナリオブジェクトを作成することが必要になります。
また、Swagger API の定義に従って API を作成して設定することもできます。