

# 针对 API Gateway 中的 REST API 的请求验证
<a name="api-gateway-method-request-validation"></a>

 您可以配置 API Gateway，使其在处理集成请求之前对 API 请求执行基本验证。如果验证失败，API Gateway 会立即取消请求、向调用方返回 400 错误响应，并在 CloudWatch Logs 中发布验证结果。这可以减少对后端进行的不必要调用。更重要的是，它可以让您把精力集中在特定于应用程序的验证工作上。您可以通过验证所需请求参数是否有效并且不为空，或为更复杂的数据验证指定一个模型架构，从而验证请求正文。

**Topics**
+ [API Gateway 中的基本请求验证概览](#api-gateway-request-validation-basic-definitions)
+ [针对 REST API 的数据模型](models-mappings-models.md)
+ [在 API Gateway 中设置基本请求验证](api-gateway-request-validation-set-up.md)
+ [Amazon CloudFormation 模板，提供带有基本请求验证的示例 API](api-gateway-request-validation-sample-cloudformation.md)

## API Gateway 中的基本请求验证概览
<a name="api-gateway-request-validation-basic-definitions"></a>

 API Gateway 可以执行基本请求验证，以便您可以专注于后端的应用程序特定验证。进行验证时，API Gateway 验证以下一项或两项条件：
+ 传入请求的 URI、查询字符串和标头中带有所需的请求参数且都不为空。API Gateway 仅检查参数是否存在，而不检查类型或格式。
+  适用的请求有效载荷遵循对应于给定内容类型的方法的已配置 [JSON schema](https://datatracker.ietf.org/doc/html/draft-zyp-json-schema-04) 请求。如果未找到匹配的内容类型，则不执行请求验证。要使用同一模型而不考虑内容类型，请将数据模型的内容类型设置为 `$default`。

要开启验证，您需要在[请求验证程序](https://docs.amazonaws.cn/apigateway/latest/api/API_RequestValidator.html)中指定验证规则，将验证程序添加到 API 的[请求验证程序的映射](https://docs.amazonaws.cn/apigateway/latest/api/API_RequestValidator.html)中，并将验证程序分配给各个 API 方法。

**注意**  
请求正文验证和[API Gateway 中适用于 REST API 且无映射模板的有效载荷的方法请求行为](integration-passthrough-behaviors.md)是两个独立的主题。当请求负载没有匹配的模型架构时，可以选择传递或阻止原始负载。有关更多信息，请参阅 [API Gateway 中适用于 REST API 且无映射模板的有效载荷的方法请求行为](integration-passthrough-behaviors.md)。