Dev*_*ops 3 amazon-web-services aws-lambda aws-api-gateway
我正在使用带有 lambda 的 aws 集成 api 网关,并且我有数据映射模板。带有查询的网址就像
https://example.com/query?value1=val1&value1=val2&value1=val3
Run Code Online (Sandbox Code Playgroud)
我试图将所有这些参数传递给 lambda,但没有运气 - 仅传递了最后一个值。这是数据映射模板的一部分。
"queryStringParameters": {
#foreach($queryParam in $input.params().querystring.keySet())
"$queryParam": "$util.escapeJavaScript($input.params().querystring.get($queryParam))" #if($foreach.hasNext),#end
#end
},
Run Code Online (Sandbox Code Playgroud)
我知道 aws 代理集成中有多值查询字符串参数,但没有使用数据映射模板找到它们。这是测试结果:
Method request query string: {value1=[val1,val2,val3]}
Endpoint request body after transformations: "queryStringParameters": {"value1": "val3"}
Run Code Online (Sandbox Code Playgroud)
尝试像在 VTL 中一样使用 #foreach 迭代该参数,但也没有成功
经过大量的文档搜索和尝试后,我只是在映射模板中编写了以下内容(幸运的是......):
"multiValueQueryStringParameters": {
#foreach($key in $method.request.multivaluequerystring.keySet())
"$key" : [
#foreach($val in $method.request.multivaluequerystring.get($key))
"$val"#if($foreach.hasNext),#end
#end
]#if($foreach.hasNext),#end
#end
},
Run Code Online (Sandbox Code Playgroud)
无需在方法和集成部分定义任何查询参数名称。
| 归档时间: |
|
| 查看次数: |
5701 次 |
| 最近记录: |