将查询字符串参数传递到响应AWS API Gateway

时间:2018-12-13 16:18:25

标签: aws-api-gateway

我已经在AWS API Gateway服务中创建了一个模拟API。

在我的GET资源中,我有一个查询字符串参数Id,我希望将其从请求传递到响应中,这样,调用调用时输入的所有ID都会与API响应中的虚拟数据一起返回

在“方法请求”中,我已将URL查询字符串参数定义为“ Id”。

在我的集成请求的映射模板中,我已将此输入参数映射到一个具有相同名称的元素。...

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

但是,我不了解如何在我的Integration Response映射模板中引用它。我尝试引用“ Id”或“ Id”,但是每次这仅返回“ Id”或“ Id”的文本,而不是Id的值。

我的响应映射模板如下所示。...

[
 {
  "Data":{
  "ItemId":'Id',
  "name": "Bread",
  "Quantity": 1000
  "Price": 1.50
  }
 }
]

我想在调用API调用时使用输入的“ Id”值填充“ ItemId”。

我浏览了很多文档,但是看不到如何实现。

请帮助我……

1 个答案:

答案 0 :(得分:0)

您是否也尝试在响应中使用它:

[
 {
  "Data":{
  "ItemId": "$input.params('Id')",
  "name": "Bread",
  "Quantity": 1000,
  "Price": 1.50
  }
 }
]

1000后缺少逗号。

您也可以像这样使用它来获取所有查询字符串参数:

{
#foreach($param in $input.params().querystring.keySet())
    ""$param"": ""$input.params().querystring.get($param)"" #if($foreach.hasNext),#end
#end
}        

映射模板使用Apache Velocity模板语言(VTL)。 http://velocity.apache.org/engine/1.7/vtl-reference.html

从VTL网站文档中:

速度提供了一种获取循环计数器的简便方法,因此您可以执行以下操作:

#foreach( $customer in $customerList )
<tr><td>$foreach.count</td><td>$customer.Name</td></tr>
#end