Amazon API Gateway
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

API Gateway 中的简单结算器 API

我们的简单计算器 API 公开了三种方法(GET、POST、GET)来调用 简单计算器 Lambda 函数。此 API 的图形表示如下:


            生成的开发工具包的简单计算器 API

这三种方法显示了为后端 Lambda 函数提供输入来执行相同操作的不同方式:

  • GET /?a=...&b=...&op=... 方法使用查询参数来指定输入。

  • POST / 方法使用 JSON 负载 {"a":"Number", "b":"Number", "op":"string"} 来指定输入。

  • GET /{a}/{b}/{op} 方法使用路径参数来指定输入。

如果未定义,API Gateway 通过将 HTTP 方法和路径部分组合起来,生成对应的开发工具包方法名称。根路径部分 (/) 称为 Api Root。例如,API 方法 GET /?a=...&b=...&op=... 的默认 Java 开发工具包方法名称为 getABOpPOST / 的默认开发工具包方法名称为 postApiRootGET /{a}/{b}/{op} 的默认开发工具包方法名称为 getABOp。单独的开发工具包可以自定义约定。对于开发工具包特定的方法名称,请参考生成的开发工具包源中的文档。

您可以,并且应该通过在各个 API 方法上指定 operationName 属性,来覆盖默认开发工具包方法名称。您可在使用 API Gateway REST API 创建 API 方法更新 API 方法时这样做。在 API Swagger 定义中,您可以设置 operationId 以实现相同结果。

在演示如何使用 API Gateway 为该 API 生成的开发工具包来调用这些方法之前,我们先简单回想一下如何对其进行设置。有关详细说明,请参阅 在 Amazon API Gateway 中创建 REST API。如果您是 API Gateway 的新用户,请先参阅 使用 Lambda 集成构建 API Gateway API

创建用于输入和输出的模型

为了在开发工具包中指定强类型输入,我们为该 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/Method 查询参数

对于 GET /?a=..&b=..&op=.. 方法,查询参数在 Method Request (方法请求) 中声明:

将负载的数据模型设置为后端的输入

对于 POST / 方法,我们创建了 Input 模型,并将其添加到方法请求中以定义输入数据的形状。

使用此模型,您的 API 客户可以通过实例化 Input 对象来调用开发工具包以指定输入。若不使用此模型,您的客户将需要创建词典对象来表示 Lambda 函数的 JSON 输入。

为后端的结果输出设置数据模型

对于所有三种方法,我们将创建 Result 模型并将其添加到方法的 Method Response 中,以定义 Lambda 函数返回的输出的形状。

使用此模型,您的 API 客户可以通过读取 Result 对象的属性来解析成功的输出。若不使用此模型,您的客户将需要创建词典对象来表示 JSON 输出。

此外,您还可以根据 Swagger API 定义创建和设置 API。