如何配置我的 API Gateway REST API,以将查询字符串参数传递给后端 Lambda 函数或 HTTP 终端节点?

上次更新日期:2021 年 1 月 6 日

我需要我的 Amazon API Gateway REST API 将查询字符串参数传递给后端 AWS Lambda 函数和 HTTP 终端节点。该如何操作?

简短描述

要配置 REST API 以将查询字符串参数传递给后端 Lambda 函数,请使用 Lambda 自定义集成

要将查询字符串参数传递给 HTTP 终端节点,请使用 HTTP 自定义集成

重要提示:务必将输入数据作为集成请求负载提供。最佳实践是,使用映射模板提供负载。有关更多信息,请参阅在方法和集成之间映射请求和响应负载

解决方法

将查询字符串参数传递给后端 Lambda 函数

1.    打开 API 网关控制台,然后选择您的 API。

2.    在资源窗格中,选择已配置的 HTTP 方法。

注意:如果为 API 配置了多个 HTTP 方法,请为每个方法重复执行步骤 2 到 15。

3.    在方法执行窗格中,选择方法请求

4.    展开URL 查询字符串参数下拉列表,然后选择添加查询字符串

5.    在名称字段中,输入 pet,然后选择复选标记图标。

6.    选中必需复选框。

7.    选择方法执行窗格。

8.    选择集成请求

9.    选择映射模板下拉列表,然后选择添加映射模板

10.    在内容类型字段中输入 application/json,然后选择复选标记图标。

11.    在随即出现的弹出窗口中,选择是,保护此集成

12.    在请求正文传递中选择当没有定义模板时 (推荐)

13.    在映射模板编辑器中,复制以下代码,并使用其替换现有脚本:

{
     "pet": "$input.params('pet')"
}

注意:有关更多信息,请参阅 API Gateway 映射模板和访问日志记录变量引用

14.    选择保存,然后选择部署 API

15.    要测试 API 的新终端节点,请运行以下 curl 命令:

curl -X GET https://jp58lnf5vh.execute-api.us-west-2.amazonaws.com/dev/lambda-non-proxy?pet=dog

重要提示:请确保 curl 命令使用查询字符串参数 pet=dog

将查询字符串参数传递给 HTTP 终端节点

1.    打开 API 网关控制台,然后选择您的 API。

2.    在资源窗格中,选择已配置的 HTTP 方法。

注意:如果为 API 配置了多个 HTTP 方法,请为每个方法重复执行步骤 2 到 10。

3.    在方法执行窗格中,选择方法请求

4.    展开URL 查询字符串参数下拉列表,然后选择添加查询字符串

5.    在名称字段中,输入 type,然后选择复选标记图标。

6.    选择方法执行窗格。

7.    选择集成请求

8.    展开 URL 查询字符串参数部分。

注意:默认情况下,方法请求查询字符串参数映射到名称相似的集成请求查询字符串参数。要将方法请求参数映射到其他集成请求参数,请删除现有的集成请求参数。然后,添加一个带有所需方法请求参数映射表达式的新查询字符串。

9.    选择保存,然后选择部署 API

10.    要测试 API 的新终端节点,请运行以下 curl 命令:

curl -X GET https://jp58lnf5vh.execute-api.us-west-2.amazonaws.com/dev/http-endpoint?pet=dog

重要提示:请确保 curl 命令使用查询字符串参数 pet=dog