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

在 API Gateway 中设置方法响应

API 方法响应将客户端将收到 API 方法请求的输出进行封装。输出数据包括 HTTP 状态代码、部分标头,还可能包含正文。

使用非代理集成,可从相关的集成响应数据映射指定的响应参数和正文,也可以根据映射分配特定静态值。集成响应中已指定这些映射。映射可以是按原样传递集成响应的恒等变换。

使用代理集成,API Gateway 可自动将后端响应传递到方法响应。您无需设置 API 方法响应。但如果使用 Lambda 代理集成,Lambda 函数必须为 API Gateway 返回此输出格式的结果,才能将集成响应成功映射到方法响应。

通过编程,该方法响应设置相当于创建 API Gateway 的 MethodResponse 资源和设置 statusCoderesponseParametersresponseModels 的属性。

为 API 方法设置状态代码时,您应该选择一个状态代码作为处理任何意料之外的集成响应的默认代码。将 500 设置默认状态代码比较合理,因为这相对于将未映射的响应转换为服务器端错误。出于教学原因,API Gateway 控制台将 200 响应设置为默认响应。但您可以将其重置为 500 响应。

要设置方法响应,您必须已创建方法请求。

设置方法响应状态代码

方法响应的状态代码定义了响应类型。例如,响应 200、400 和 500 分别表示响应成功、客户端错误和服务器端错误。

要设置方法响应状态代码,请将 statusCode 属性设置为 HTTP 状态代码。以下 AWS CLI 命令将创建 200 的方法响应。

aws apigateway put-method-response \ --region us-west-2 \ --rest-api-id vaz7da96z6 \ --resource-id 6sxz2j \ --http-method GET \ --status-code 200

设置方法响应参数

方法响应参数定义客户端在哪些标头中收到相关方法请求的响应。响应参数还会根据 API 方法的集成响应中规定的映射指定 API Gateway 将集成响应参数映射到的目标。

要设置方法请求参数,请添加到 "{parameter-name}":"{boolean}" 格式的 MethodResponse 键/值对的 responseParameters 映射。以下 CLI 命令显示了将 my-header 标头、petId 路径变量和 query 查询参数作为映射目标的示例:

aws apigateway put-method-response \ --region us-west-2 \ --rest-api-id vaz7da96z6 \ --resource-id 6sxz2j \ --http-method GET \ --status-code 200 \ --response-parameters method.request.header.my-header=false,method.request.path.petId=true,method.request.querystring.query=false

设置方法响应模型

方法响应模型定义了方法响应正文的格式。设置响应模型之前,必须先在 API Gateway 中创建模型。为此,可以调用 create-model 命令。以下示例显示了如何创建能够描述 PetStorePet 方法请求的响应正文的 GET /pets/{petId} 模型。

aws apigateway create-model \ --region us-west-2 \ --rest-api-id vaz7da96z6 \ --content-type application/json \ --name PetStorePet \ --schema '{ \ "$schema": "http://json-schema.org/draft-04/schema#", \ "title": "PetStorePet", \ "type": "object", \ "properties": { \ "id": { "type": "number" }, \ "type": { "type": "string" }, \ "price": { "type": "number" } \ } \ }'

结果是针对 API Gateway Model 资源而创建。

要设置方法响应模型来定义负载格式,请将 "application/json":"PetStorePet" 键/值对添加到 MethodResponse 资源的 requestModels 映射。put-method-response 的以下 AWS CLI 命令显示了如何执行此操作:

aws apigateway put-method-response \ --region us-west-2 \ --rest-api-id vaz7da96z6 \ --resource-id 6sxz2j \ --http-method GET \ --status-code 200 \ --request-parameters method.request.header.my-header=false,method.request.path.petId=true,method.request.querystring.query=false --request-models '{"application/json":"PetStorePet"}'

为 API 生成强类型开发工具包时,必须设置方法响应模型。它可确保输出将在 Java 或 Objective-C 中转换为适当的类。在其他情况下,设置模型是可选操作。