

# API Gateway 中用于 REST API 的方法
<a name="how-to-method-settings"></a>

 在 API Gateway 中，API 方法包含[方法请求](https://docs.aws.amazon.com/apigateway/latest/api/API_Method.html)和[方法响应](https://docs.aws.amazon.com/apigateway/latest/api/API_MethodResponse.html)。您可以设置 API 方法以定义客户端提交访问后端服务的请求时应该或必须执行的操作，并定义返回给客户端时收到的响应。对于输入，您可以为客户端选择方法请求参数或适用的负载，以在运行时提供必需或可选的数据。对于输出，您确定将方法响应状态代码、标头和适用的正文作为将后端响应数据映射到的目标，然后再将其返回到客户端。要帮助客户端开发人员理解 API 的行为以及输入和输出格式，您可以[记录 API ](api-gateway-documenting-api.md)并为[无效请求](api-gateway-method-request-validation.md)[提供正确的错误消息](api-gateway-gatewayResponse-definition.md#customize-gateway-responses)。

API 方法请求是 HTTP 请求。要设置方法请求，您需要配置 HTTP 方法（或动词）以及指向 API [资源](https://docs.aws.amazon.com/apigateway/latest/api/API_Resource.html)、标头和适用查询字符串参数的路径。您还可在 HTTP 方法是 `POST`、`PUT` 或 `PATCH` 时配置负载。例如，要使用 [PetStore 示例 API](api-gateway-create-api-from-example.md) 检索宠物，您可以定义 `GET /pets/{petId}` 的 API 方法请求，其中 `{petId}` 是可在运行时获取数字的路径参数。

```
GET /pets/1
Host: apigateway.us-east-1.amazonaws.com
...
```

如果客户端指定了错误的路径，例如 `/pet/1` 或 `/pets/one`，而不是 `/pets/1`，系统就会抛出异常。

API 方法响应是具有指定状态代码的 HTTP 响应。对于非代理集成，您必须设置方法响应以指定映射的必需或可选目标。这些会将集成响应标头或正文转换为关联的方法响应标头或正文。映射可以像[身份转换](https://en.wikipedia.org/wiki/Identity_transform)一样简单，它通过集成按原样传递标头或正文。例如，以下 `200` 方法响应显示了成功按原样传递集成响应的示例。

```
200 OK 
Content-Type: application/json
...

{
    "id": "1",
    "type": "dog",
    "price": "$249.99"
}
```

原则上，您可以定义对应于来自后端的特定响应的方法响应。通常，这会涉及任何 2XX、4XX 和 5XX 响应。但是，这可能并不可行，因为您通常不可能提前知道后端可能返回的所有响应。实际上，您可以指定一个默认方法响应来处理来自后端的未知响应或未映射的响应。最好将 500 响应指定为默认响应。在任何情况下，您都必须为非代理集成设置至少一个方法响应。否则，API Gateway 将向客户端返回 500 错误响应，即使后端的请求成功也是如此。

 要为 API 支持强类型开发工具包 (如 Java 开发工具包)，您应该为方法请求定义输入数据模型，并为方法响应定义输出数据模型。

## 先决条件
<a name="method-setting-prerequisites"></a>

设置 API 方法之前，请验证以下内容：
+ 方法在 API Gateway 中必须可用。按照中的说明进行操作[教程：使用 HTTP 非代理集成创建 REST API](api-gateway-create-api-step-by-step.md)
+ 如果您希望方法与 Lambda 函数进行通信，则必须已在 IAM 中创建 Lambda 调用角色和 Lambda 执行角色。您还必须创建将在 中与该方法进行通信的 Lambda 函数AWS Lambda 要创建角色和函数，请使用[为 Lambda 非代理集成创建 Lambda 函数](getting-started-lambda-non-proxy-integration.md#getting-started-new-lambda)的[选择 AWS Lambda 集成教程](getting-started-with-lambda-integration.md)中的说明。
+ 如果您希望该方法与 HTTP 或 HTTP 代理集成进行通信，则必须已创建且有权访问将与您的方法进行通信的 HTTP 端点 URL。
+  确认 API Gateway 支持 HTTP 和 HTTP 代理端点的证书。有关详细信息，请参阅 [API Gateway 中的 API Gateway 支持的 HTTP 和 HTTP 代理集成证书的颁发机构](api-gateway-supported-certificate-authorities-for-http-endpoints.md)。

**Topics**
+ [先决条件](#method-setting-prerequisites)
+ [在 API Gateway 中设置方法请求](api-gateway-method-settings-method-request.md)
+ [在 API Gateway 中设置方法响应](api-gateway-method-settings-method-response.md)
+ [使用 API Gateway 控制台设置方法](how-to-set-up-method-using-console.md)