如何将查询字符串参数传递给 AWS Lambda函数或 HTTP 端点?
在本文中,我们将探讨将查询字符串参数从客户端传递到后端 Lambda 或 HTTP 端点 API 网关的过程。我们知道 Lambda 和 HTTP 端点有两种类型的集成。第一种是代理集成,第二种是非代理集成。虽然代理实现是推荐的方法,因为它简化了 API 的管理并减少了 API 响应时间,但非代理实现强制使用映射模板。
尽管 API Gateway 中支持使用模板,但它们使用 VTL。由于 AWS 支持团队不支持 VLT 语言支持,因此想要为其用例自定义模板的客户必须了解 VLT 语言。有两种类型的集成:
代理集成:
当客户端提交 API 请求时,API 网关将原始请求按原样传递给后端,只是不保留请求参数的顺序。请求参数可以称为头、查询字符串、路径参数等。
非代理集成:
使用此集成,您必须确保后端的输入作为集成请求有效负载提供。这意味着,作为 API 开发人员,您必须使用映射模板将查询字符串参数以及客户端作为请求参数提供的任何输入数据映射到适当的集成请求正文中。
对于代理集成:
第 1 步:打开 API Gateway 管理控制台并选择 API。
第二步:选择资源。选择配置的 HTTP 方法。
第 3 步:选择集成请求。
第 4 步:选择 HTTP 或 Lambda 作为集成类型。选中 HTTP 后端的“使用 HTTP 代理集成”框,或为 lambda 后端使用 Lambda 代理集成。选择后端支持的“HTTP方法”。提供“端点 URL”。例如,宠物店端点。选择 Lambda函数并接受其他默认设置。最后选择保存。
第 5 步:现在通过单击“操作”选项卡来部署 API。
对于 Lambda 非代理集成:
为此,您必须确保 lambda函数的输入作为集成请求负载提供。这意味着,作为 API 开发人员,您必须使用映射模板将查询字符串参数以及客户端作为请求参数提供的任何输入数据映射到适当的集成请求正文中。以下是相同的步骤:
第 1 步:打开 API Gateway 控制台并选择 API。
第二步:选择资源。选择配置的 HTTP 方法。
第 3 步:在方法执行面板中选择方法请求。
第 4 步:展开 URL 查询字符串参数部分并选择“添加查询字符串”。
第 5 步:输入“foo”作为名称,选择所需选项并选择复选标记图标以保存设置。根据需求选择缓存选项返回到方法执行面板,然后选择集成请求。
第 6 步:展开映射模板部分,选择添加映射模板。输入应用程序 JSON 作为内容类型,选择复选标记图标以在出现的弹出窗口中保存设置。选择“是确保此集成”。
第七步:勾选推荐的“当没有定义模板时”请求正文通过。将映射模板编辑器中生成的映射脚本替换为以下内容:
#set($inputRoot = $input.path('$'))
{
"foo": "$input.params('foo')"
}
这里输入点参数从路径查询字符串或标头值返回方法请求参数的值。给定一个参数名称字符串“foo”。输入点参数从路径、查询字符串或标头值返回方法请求参数的值。给定一个参数名称字符串foo。这个给定的模板会将 input.params 返回的值分配给一个名为“foo”的变量,该变量可以在后端检索。
第 8 步:然后选择保存并部署 API。