跳至内容

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

2 分钟阅读
0

我需要使用 Amazon API Gateway REST API 来将查询字符串参数传递给后端 AWS Lambda 函数或 HTTP 端点。

简短描述

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

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

重要事项: 确保将输入数据作为集成请求有效载荷提供。最佳做法是使用映射模板来提供有效载荷。有关详细信息,请参阅 API Gateway 中 REST API 的参数映射示例

解决方法

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

完成以下步骤:

  1. 打开 API Gateway 控制台,然后选择您的 API。
  2. Resources(资源)窗格中,选择已配置的 HTTP 方法。
    注意: 如果为该 API 配置了多个 HTTP 方法,请针对每个方法重复这些步骤。
  3. Method Execution(方法执行)窗格中,选择 Method Request(方法请求),然后选择 Edit(编辑)。
  4. 展开 URL Query String Parameters(URL 查询字符串参数)下拉列表,然后选择 Add query string(添加查询字符串)。
  5. Name(名称)字段中,输入 pet
  6. 选中 Required(必填)复选框,然后选择 Save(保存)。
  7. 选择 Integration Request(集成请求)选项卡,然后选择 Edit(编辑)。
  8. 展开 Mapping templates(映射模板),然后选择 Add mapping template(添加映射模板)。
  9. Content-Type 字段中,输入 application/json
  10. 在映射模板编辑器中,复制当前脚本并将其替换为以下代码:
{     "pet": "$input.params('pet')"
}

注意: 有关详细信息,请参阅输入变量。 选择 Save(保存),然后选择 Deploy the API(部署 API)。 要测试 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 Gateway 控制台,然后选择您的 API。
  2. Resources(资源)窗格中,选择已配置的 HTTP 方法。
    注意: 如果为该 API 配置了多个 HTTP 方法,请针对每个方法重复这些步骤。
  3. Method Execution(方法执行)窗格中,选择 Method Request(方法请求),然后选择 Edit(编辑)。
  4. 展开 URL Query String Parameters(URL 查询字符串参数)下拉列表,然后选择 Add query string(添加查询字符串)。
  5. Name(名称)字段中,输入 type,然后选择 Save(保存)。
  6. 选择 Integration Request(集成请求)选项卡,然后选择 Edit(编辑)。
  7. 展开 URL Query String Parameters(URL 查询字符串参数)部分。
  8. Name(名称)字段中,输入 type
  9. Mapped from(映射自)字段中,输入 method.request.querystring.type
  10. 选择 Save(保存),然后选择 Deploy the API(部署 API)。
  11. 要测试 API 的新端点,请运行以下 curl 命令:
curl -X GET https://jp58lnf5vh.execute-api.us-west-2.amazonaws.com/dev/http-endpoint?pet=dog

重要事项: 确保 curl 命令具有查询字符串参数 pet=dog

相关信息

教程: 利用 Lambda 代理集成创建 REST API

教程: 利用 Lambda 非代理集成创建 REST API

教程: 利用 HTTP 代理集成创建 REST API

教程: 利用 HTTP 非代理集成创建 REST API