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

使用 API Gateway 控制台设置方法

设置 API 方法之前,请验证以下内容:

在 API Gateway 控制台中设置 API Gateway 方法请求。

要使用 API Gateway 控制台指定 API 的方法请求/响应以及配置该方法对请求授权的方式,请按照以下说明操作。

注意

这些说明假设您已完成 使用 API Gateway 控制台设置 API 集成请求 中的步骤。它们非常适用于对使用 Lambda 集成构建 API Gateway API给出的讨论进行补充。

  1. Resources 窗格中选定方法的情况下,从 Method Execution 窗格中选择 Method Request

  2. Settings 下,选择铅笔图标以打开 Authorization 下拉菜单,然后选择一个可用的授权方。

    1. 要为任何用户启用开放式访问,请选择 NONE。如果未更改默认设置,则可跳过此步骤。

    2. 要使用 IAM 权限来控制客户端访问方法的权限,请选择 AWS_IAM。如果选择此选项,只允许具有已附加正确 IAM 策略的 IAM 角色的用户调用此方法。

      要创建 IAM 角色,请指定类似于以下格式的访问策略:

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "execute-api:Invoke" ], "Resource": [ "resource-statement" ] } ] }

      在此访问策略中,resource-statementAuthorization Settings 部分中 ARN 字段的值。有关设置 IAM 权限的更多信息,请参阅使用 IAM 许可控制对 API 的访问

      要创建 IAM 角色,您可以调整使用 Lambda 集成构建 API Gateway API创建 Lambda 函数部分的“创建 Lambda 调用角色及其策略”和“创建 Lambda 执行角色及其策略”中的说明。

      要保存您的选择,请选择 Update。否则,选择 Cancel

    3. 要使用自定义授权方,请在 Token authorizer 下选择一个授权方。您必须先自定义授权方,此选项才会在下拉菜单中显示。有关如何创建自定义授权方的信息,请参阅使用 API Gateway 自定义授权方

    4. 要使用 Amazon Cognito 用户池,请在 Cognito user pool authorizers 下选择可用的用户池。您必须在 Amazon Cognito 中创建用户池并在 API Gateway 中创建 Amazon Cognito 用户池授权方,此选项才会在下拉菜单中显示。有关如何创建 Amazon Cognito 用户池授权方的信息,请参阅使用 Amazon Cognito 用户池

  3. 要启用或禁用请求验证,请从 Request Validator 下拉菜单中选择铅笔图标,然后选择所列的选项之一。有关各选项的更多信息,请参阅在 API Gateway 中启用请求验证

  4. 如需 API 密钥,请选择铅笔图标以打开 API Key Required 下拉菜单,然后根据您的 API 要求选择 truefalse。启用后,将在使用计划中使用 API 密钥以限制客户端流量。

  5. 要向方法中添加查询字符串参数,请执行以下操作:

    1. 选择 URL Query String Parameters 旁边的箭头,然后选择 Add query string

    2. 对于 Name,键入查询字符串参数的名称。

    3. 选择复选标记图标以保存新查询字符串参数名称。

    4. 如果将在请求验证中使用新创建的查询字符串参数,请选择 Required 选项。有关请求验证的更多信息,请参阅在 API Gateway 中启用请求验证

    5. 如果新创建的查询字符串参数将用作缓存密钥的一部分,请选中 Caching 选项。这仅适用于缓存已启用的情况。有关缓存的更多信息,请参阅将方法/集成参数用作缓存键

    提示

    要删除查询字符串参数,请选择与之关联的 x 图标,然后选择 Remove this parameter and any dependent parameters 以确认删除。

    要更改查询字符串参数的名称,请将其删除,然后重新创建一个新的查询字符串参数。

  6. 要向方法中添加标头参数,请执行以下操作:

    1. 选择 HTTP Request Headers 旁边的箭头,然后选择 Add header

    2. 对于 Name,请键入标头参数的名称,然后选择复选标记图标以保存设置。

    3. 如果将在请求验证中使用新创建的标头参数,请选择 Required 选项。有关请求验证的更多信息,请参阅在 API Gateway 中启用请求验证

    4. 如果新创建的标头参数将用作缓存密钥的一部分,请选择 Caching 选项。这仅适用于缓存已启用的情况。有关缓存的更多信息,请参阅将方法/集成参数用作缓存键

    提示

    要删除标头参数,请选择与之关联的 x 图标,然后选择 Remove this parameter and any dependent parameters 以确认删除。

    要更改标头参数的名称,请将其删除,然后重新创建一个新的查询字符串参数。

  7. 要声明包含 POST PUT、或 PATCH HTTP 动词的方法请求的负载格式,请展开 Request Body,然后执行以下操作:

    1. 选择 Add model

    2. Content type 键入 MIME 类型 (例如 application/json)。

    3. 打开 Model name 下拉菜单,选择负载的可用模型,然后选择复选标记图标以保存设置。

      该 API 目前可用的模型包括默认 EmptyError 模型以及您创建和添加到 API 的模型集合的任何模型。有关创建模型的更多信息,请参阅创建模型

      注意

      模型适用于向客户端通知预期数据格式的负载。这对生成骨骼映射模板非常有帮助。请务必使用 Java、C #、Objective-C 和 Swift 等语言编程生成 API 的强类型开发工具包。仅在已针对负载启用请求验证时才需要该开发工具包。

  8. 要在由 API Gateway 生成的此 API 的 Java 开发工具包中分配操作名称,请展开 SDK Settings,然后在 Operation name 中键入名称。例如,对于 GET /pets/{petId} 的方法请求,相对应的默认 Java 开发工具包操作名称为 GetPetsPetId。此名称由此方法的 HTTP 动词 (GET) 和资源路径变量名称 (PetsPetId) 构建而成。如果您将操作名称设置为 getPetById,开发工具包操作名称将变为 GetPetById

使用 API Gateway 控制台设置 API Gateway 方法响应

API 方法可以有一个或多个响应。每个响应都通过 HTTP 状态代码编制索引。默认情况下,API Gateway 控制台将 200 响应添加到方法响应。您可以对其进行修改,例如让该方法返回 201。还可以添加其他响应,例如添加 409 表示拒绝访问,添加 500 表示所用的阶段变量未初始化。

要使用 API Gateway 控制台修改、删除或向 API 方法添加响应,请按照以下说明操作。

  1. 从 API 资源的指定方法的 Method Execution 中选择 Method Response

  2. 要添加新响应,请选择 Add Response

    1. 键入 HTTP 状态代码;例如,为 HTTP Status 键入 200400500,然后选择复选标记图标以保存选择。

      如果后端返回的响应未定义相应的方法响应,API Gateway 就无法将响应返回给客户端。而是返回 500 Internal server error 错误响应。

    2. 展开指定状态代码的响应。

    3. 选择 Add Header

    4. Response Headers for {status} 下的 Name 中键入名称,然后选择复选标记图标以保存选择。

      如果您需要将后端返回的任何标头转换为方法响应中定义的一个标头,则必须先按照此步骤介绍的说明添加方法响应标头。

    5. Response Body for {status} 下选择 Add Response Model

    6. Content type 键入响应负载的媒体类型,然后从 Models 下拉菜单中选择模型。

    7. 选择复选标记图标以保存设置。

  3. 要修改现有的响应,请展开响应,然后按照上面的步骤 2 进行操作。

  4. 要删除响应,请选择该响应的 x 图标,并确认您要删除该响应。

对于从后端返回的每个响应,您必须将兼容的响应配置为方法响应。但配置方法响应标头和负载模型是可选的,除非您先将后端的结果映射到方法响应,然后再返回给客户端。此外,如果您要为 API 生成强类型开发工具包,方法响应负载模型就非常重要。