

# 使用 API Gateway 控制台设置方法
<a name="how-to-set-up-method-using-console"></a>

使用 REST API 控制台创建方法时，您可以同时配置集成请求和方法请求。默认情况下，API Gateway 会为您的方法创建 `200` 方法响应。

以下说明介绍如何编辑方法请求设置，以及如何为您的方法创建其它方法响应。

**Topics**
+ [在 API Gateway 控制台中编辑 API Gateway 方法请求](#how-to-method-settings-callers-console)
+ [使用 API Gateway 控制台设置 API Gateway 方法响应](#how-to-method-response-settings-console)

## 在 API Gateway 控制台中编辑 API Gateway 方法请求
<a name="how-to-method-settings-callers-console"></a>

 这些说明假设您已创建了方法请求。有关如何创建方法的更多信息，请参阅[使用 API Gateway 控制台设置 API 集成请求](how-to-method-settings-console.md)。

1. 在**资源**窗格中，选择方法，然后选择**方法请求**选项卡。

1. 在**方法请求设置**部分中，选择**编辑**。

1. 对于**授权**，选择一个可用的授权方。

   1. 要为任何用户启用对此方法的开放式访问，请选择**无**。如果未更改默认设置，则可跳过此步骤。

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

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

------
#### [ JSON ]

****  

      ```
      {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
          {
            "Effect": "Allow",
            "Action": [
              "execute-api:Invoke"
            ],
            "Resource": [
              "arn:aws:execute-api:us-east-1:111111111111:aaabbb/*/GET/"
            ]
          }
        ]
      }
      ```

------

      在此访问策略中，`arn:aws:execute-api:us-east-1:111111111111:aaabbb/*/GET/` 是方法的 ARN。您可以通过在**资源**页面上选择方法来找到该方法的 ARN。有关设置 IAM 权限的更多信息，请参阅[使用 IAM 权限控制对 REST API 的访问](permissions.md)。

      要创建 IAM 角色，您可以调整以下教程中的说明：[为 Lambda 非代理集成创建 Lambda 函数](getting-started-lambda-non-proxy-integration.md#getting-started-new-lambda)。

   1.  要使用 Lambda 授权方，请选择令牌或请求授权方。创建 Lambda 授权方，让此选择显示在下拉菜单中。有关如何创建 Lambda 授权方的信息，请参阅 [使用 API Gateway Lambda 授权方](apigateway-use-lambda-authorizer.md)。

   1.  要使用 Amazon Cognito 用户池，请在 **Cognito 用户池授权方**下选择可用的用户池。在 Amazon Cognito 中创建一个用户群体，并在 API Gateway 中创建一个 Amazon Cognito 用户群体授权方，以便在下拉菜单中显示此选择。有关如何创建 Amazon Cognito 用户池授权方的信息，请参阅 [使用 Amazon Cognito 用户池作为授权方控制对 REST API 的访问](apigateway-integrate-with-cognito.md)。

1.  要指定请求验证，请从**请求验证程序**下拉菜单中选择一个值。要关闭请求验证，请选择**无**。有关各选项的更多信息，请参阅[针对 API Gateway 中的 REST API 的请求验证](api-gateway-method-request-validation.md)。

1. 选择**需要 API 密钥**以需要 API 密钥。启用后，将在[使用计划](api-gateway-api-usage-plans.md)中使用 API 密钥以限制客户端流量。

1. （可选）要在 API Gateway 生成的此 API 的 Java SDK 中分配操作名称，请为**输入名称**输入一个名称。例如，对于 `GET /pets/{petId}` 的方法请求，相对应的默认 Java 开发工具包操作名称为 `GetPetsPetId`。此名称由此方法的 HTTP 动词 (`GET`) 和资源路径变量名称 (`Pets` 和 `PetId`) 构建而成。如果您将操作名称设置为 `getPetById`，开发工具包操作名称将变为 `GetPetById`。

1. 要向方法中添加查询字符串参数，请执行以下操作：

   1. 选择 **URL 查询字符串参数**，然后选择**添加查询字符串**。

   1. 对于**名称**，输入查询字符串参数的名称。

   1. 如果要将新创建的查询字符串参数用于请求验证，请选择**必填**。有关请求验证的更多信息，请参阅[针对 API Gateway 中的 REST API 的请求验证](api-gateway-method-request-validation.md)。

   1. 如果要将新创建的查询字符串参数用作缓存密钥的一部分，请选中**缓存**。有关缓存的更多信息，请参阅 [将方法或集成参数用作索引缓存响应的缓存键](api-gateway-caching.md#enable-api-gateway-cache-keys)。

   要移除查询字符串参数，请选择**移除**。

1. 要向方法中添加标头参数，请执行以下操作：

   1. 选择 **HTTP 请求标头**，然后选择**添加标头**。

   1. 对于**名称**，输入标头的名称。

   1. 如果要将新创建的标头用于请求验证，请选择**必填**。有关请求验证的更多信息，请参阅[针对 API Gateway 中的 REST API 的请求验证](api-gateway-method-request-validation.md)。

   1. 如果要将新创建的标头用作缓存密钥的一部分，请选中**缓存**。有关缓存的更多信息，请参阅 [将方法或集成参数用作索引缓存响应的缓存键](api-gateway-caching.md#enable-api-gateway-cache-keys)。

   要移除标头，请选择**移除**。

1.  要声明包含 `POST`、`PUT` 或 `PATCH` HTTP 动词的方法请求的负载格式，请选择**请求正文**，然后执行以下操作：

   1. 选择**添加模型**。

   1. 对于**内容类型**，输入 MIME 类型（例如 `application/json`）。

   1. 对于**模型**，请从下拉菜单中选择一个模型。该 API 目前可用的模型包括默认 `Empty` 和 `Error` 模型以及您创建和添加到 API 的[模型](https://docs.amazonaws.cn/apigateway/latest/api/API_Model.html)集合的任何模型。有关创建模型的更多信息，请参阅[针对 REST API 的数据模型](models-mappings-models.md)。
**注意**  
 模型适用于向客户端通知预期数据格式的负载。这对生成骨骼映射模板非常有帮助。请务必使用 Java、C \$1、Objective-C 和 Swift 等语言编程生成 API 的强类型开发工具包。仅在已针对负载启用请求验证时才需要该开发工具包。

1. 选择**保存**。

## 使用 API Gateway 控制台设置 API Gateway 方法响应
<a name="how-to-method-response-settings-console"></a>

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

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

1. 在**资源**窗格中，选择方法，然后选择**方法响应**选项卡。您可能需要选择右箭头按钮，以显示该选项卡。

1. 在**方法响应设置**部分，选择**创建响应**。

1. 对于 **HTTP 状态代码**，输入 HTTP 状态代码，例如`200`、`400` 或 `500`。

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

1. 选择**添加标头**。

1.  对于**标头名称**，输入名称。

    要将标头从后端返回给客户端，请在方法响应中添加标头。

1.  选择**添加模型**以定义方法响应正文的格式。

   为**内容类型**输入响应负载的媒体类型，然后从**模型**下拉菜单中选择模型。

1. 选择**保存**。

要修改现有响应，请导航到您的方法响应，然后选择**编辑**。要更改 **HTTP 状态代码**，请选择**删除**并创建新的方法响应。

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