使用 API Gateway 控制台设置方法
设置 API 方法之前,请验证以下内容:
-
方法在 API Gateway 中必须可用。按照中的说明进行操作教程:使用 HTTP 非代理集成构建 REST API
-
如果您希望方法与 Lambda 函数进行通信,则必须已在 IAM 中创建 Lambda 调用角色和 Lambda 执行角色。您还必须创建将在 Amazon Lambda 中与该方法进行通信的 Lambda 函数。要创建角色和函数,请使用使用 Lambda 集成构建 API Gateway REST API的为 Lambda 非代理集成创建 Lambda 函数中的说明。
-
如果您希望该方法与 HTTP 或 HTTP 代理集成进行通信,则必须已创建且有权访问将与您的方法进行通信的 HTTP 终端节点 URL。
-
确认 API Gateway 支持 HTTP 和 HTTP 代理终端节点的证书。有关详细信息,请参阅 API Gateway 支持的 HTTP 和 HTTP 代理集成证书的颁发机构。
在 API Gateway 控制台中设置 API Gateway 方法请求
要使用 API Gateway 控制台指定 API 的方法请求/响应以及配置该方法对请求授权的方式,请按照以下说明操作。
这些说明假设您已完成 使用 API Gateway 控制台设置 API 集成请求中的步骤。它们非常适用于对使用 Lambda 集成构建 API Gateway REST API给出的讨论进行补充。
-
在资源窗格中选定方法的情况下,从 Method Execution (方法执行) 窗格中选择 Method Request (方法请求)。
-
在设置下,选择铅笔图标以打开授权下拉菜单,然后选择一个可用的授权方。
-
要为任何用户启用开放式访问,请选择
NONE
。如果未更改默认设置,则可跳过此步骤。 -
要使用 IAM 权限来控制客户端访问方法的权限,请选择
AWS_IAM
。如果选择此选项,只允许具有已附加正确 IAM 策略的 IAM 角色的用户调用此方法。要创建 IAM 角色,请指定类似于以下格式的访问策略:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "execute-api:Invoke" ], "Resource": [ "
resource-statement
" ] } ] }在此访问策略中,
resource-statement
是授权设置部分中 ARN 字段的值。有关设置 IAM 权限的更多信息,请参阅使用 IAM 权限控制对 API 的访问。要创建 IAM 角色,您可以调整使用 Lambda 集成构建 API Gateway REST API的创建 Lambda 函数部分的“创建 Lambda 调用角色及其策略”和“创建 Lambda 执行角色及其策略”中的说明。
要保存您的选择,请选择 Update (更新)。否则,选择取消。
-
要使用 Lambda 授权方,请在令牌授权方下选择一个授权方。您必须先创建 Lambda 授权方,此选项才会在下拉菜单中显示。有关如何创建 Lambda 授权方的信息,请参阅 使用 API Gateway Lambda 授权方。
-
要使用 Amazon Cognito 用户池,请在 Cognito 用户池授权方下选择可用的用户池。您必须在 Amazon Cognito 中创建了一个用户池,并在 API Gateway 中创建了一个 Amazon Cognito 用户池授权方,才能在下拉菜单中显示此选项。有关如何创建 Amazon Cognito 用户池授权方的信息,请参阅 使用 Amazon Cognito 用户池作为授权方控制对 REST API 的访问。
-
-
要启用或禁用请求验证,请从 Request Validator (请求验证程序) 下拉菜单中选择铅笔图标,然后选择所列的选项之一。有关各选项的更多信息,请参阅在 API Gateway 中启用请求验证。
-
如需 API 密钥,请选择铅笔图标以打开 API Key Required (需要的 API 秘钥) 下拉菜单,然后根据您的 API 要求选择
true
或false
。启用后,将在使用计划中使用 API 密钥以限制客户端流量。 -
要向方法中添加查询字符串参数,请执行以下操作:
-
选择 URL Query String Parameters (URL 查询字符串参数) 旁边的箭头,然后选择 Add query string (添加查询字符串)。
-
对于名称,键入查询字符串参数的名称。
-
选择复选标记图标以保存新查询字符串参数名称。
-
如果将在请求验证中使用新创建的查询字符串参数,请选择 Required (必填) 选项。有关请求验证的更多信息,请参阅在 API Gateway 中启用请求验证。
-
如果新创建的查询字符串参数将用作缓存密钥的一部分,请选中 Caching (缓存) 选项。这仅适用于缓存已启用的情况。有关缓存的更多信息,请参阅将方法或集成参数用作索引缓存响应的缓存键。
提示 要删除查询字符串参数,请选择与之关联的 x 图标,然后选择 Remove this parameter and any dependent parameters (删除此参数及所有相关参数) 以确认删除。
要更改查询字符串参数的名称,请将其删除,然后重新创建一个新的查询字符串参数。
-
-
要向方法中添加标头参数,请执行以下操作:
-
选择 HTTP Request Headers (HTTP 请求标头) 旁边的箭头,然后选择 Add header (添加标头)。
-
对于名称,请键入标头参数的名称,然后选择复选标记图标以保存设置。
-
如果将在请求验证中使用新创建的标头参数,请选择 Required (必填) 选项。有关请求验证的更多信息,请参阅在 API Gateway 中启用请求验证。
-
如果新创建的标头参数将用作缓存密钥的一部分,请选择 Caching (缓存) 选项。这仅适用于缓存已启用的情况。有关缓存的更多信息,请参阅将方法或集成参数用作索引缓存响应的缓存键。
提示 要删除标头参数,请选择与之关联的 x 图标,然后选择 Remove this parameter and any dependent parameters (删除此参数及所有相关参数) 以确认删除。
要更改标头参数的名称,请将其删除,然后重新创建一个新的查询字符串参数。
-
-
要声明包含
POST
PUT
、或PATCH
HTTP 动词的方法请求的负载格式,请展开 Request Body (请求正文),然后执行以下操作:-
选择 Add model (添加模型)。
-
为 Content type (内容类型) 键入 MIME 类型(例如
application/json
)。 -
打开 Model name (模型名称) 下拉菜单,选择负载的可用模型,然后选择复选标记图标以保存设置。
该 API 目前可用的模型包括默认
Empty
和Error
模型以及您创建和添加到 API 的模型集合的任何模型。有关创建模型的更多信息,请参阅在 API Gateway 中创建模型。注意 模型适用于向客户端通知预期数据格式的负载。这对生成骨骼映射模板非常有帮助。请务必使用 Java、C #、Objective-C 和 Swift 等语言编程生成 API 的强类型开发工具包。仅在已针对负载启用请求验证时才需要该开发工具包。
-
-
要在由 API Gateway 生成的此 API 的 Java 开发工具包中分配操作名称,请展开开发工具包设置,然后在操作名称中键入名称。例如,对于
GET /pets/{petId}
的方法请求,相对应的默认 Java 开发工具包操作名称为GetPetsPetId
。此名称由此方法的 HTTP 动词 (GET
) 和资源路径变量名称 (Pets
和PetId
) 构建而成。如果您将操作名称设置为getPetById
,开发工具包操作名称将变为GetPetById
。
使用 API Gateway 控制台设置 API Gateway 方法响应
API 方法可以有一个或多个响应。每个响应都通过 HTTP 状态代码编制索引。默认情况下,API Gateway 控制台将 200
响应添加到方法响应。您可以对其进行修改,例如让该方法返回 201
。还可以添加其他响应,例如添加 409
表示拒绝访问,添加 500
表示所用的阶段变量未初始化。
要使用 API Gateway 控制台修改、删除或添加对 API 方法的响应,请按照以下说明操作。
-
从 API 资源的指定方法的 Method Execution (方法执行) 中选择 Method Response (方法响应)。
-
要添加新响应,请选择 Add Response (添加响应)。
-
键入 HTTP 状态代码;例如,为 HTTP Status (HTTP 状态) 键入
200
、400
或500
,然后选择复选标记图标以保存选择。如果后端返回的响应未定义相应的方法响应,API Gateway 就无法将响应返回给客户端。而是返回
500 Internal server error
错误响应。 -
展开指定状态代码的响应。
-
选择 Add Header (添加标头)。
-
在 Response Headers for
{status}
下的名称中键入名称,然后选择复选标记图标以保存选择。如果您需要将后端返回的任何标头转换为方法响应中定义的一个标头,则必须先按照此步骤介绍的说明添加方法响应标头。
-
在 Response Body for
{status}
下选择 Add Response Model (添加响应模型)。 -
为 Content type (内容类型) 键入响应负载的媒体类型,然后从模型下拉菜单中选择模型。
-
选择复选标记图标以保存设置。
-
-
要修改现有的响应,请展开响应,然后按照上面的步骤 2 进行操作。
-
要删除响应,请选择该响应的 x 图标,并确认您要删除该响应。
对于从后端返回的每个响应,您必须将兼容的响应配置为方法响应。但配置方法响应标头和负载模型是可选的,除非您先将后端的结果映射到方法响应,然后再返回给客户端。此外,如果您要为 API 生成强类型开发工具包,方法响应负载模型就非常重要。