amazon-web-services - 如何将多值查询字符串参数传递给 api 网关上的 lambda?
问题描述
我正在使用带有 lambda 的 aws 集成 API 网关,并且我有数据映射模板。带有查询的网址就像
https://example.com/query?value1=val1&value1=val2&value1=val3
我正在尝试将所有这些参数传递给 lambda,但没有运气 - 只有最后一个值被传递。这是数据映射模板的一部分。
"queryStringParameters": {
#foreach($queryParam in $input.params().querystring.keySet())
"$queryParam": "$util.escapeJavaScript($input.params().querystring.get($queryParam))" #if($foreach.hasNext),#end
#end
},
我知道在 aws 代理集成中有 multivaluequerystringparameters 但没有运气使用数据映射模板找到它们。以下是测试结果:
Method request query string: {value1=[val1,val2,val3]}
Endpoint request body after transformations: "queryStringParameters": {"value1": "val3"}
尝试使用 #foreach 像在 VTL 中那样迭代该参数,但也没有运气
解决方案
经过大量的文档搜索和尝试,我只是在映射模板中写了这个(幸运...):
"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
},
无需在方法和集成部分定义任何查询参数名称。
推荐阅读
- powerbi - 如何计算计算列中power bi中过滤表的行数
- android - Admob - android:我可以请求多少广告?
- emacs - 如何将键盘映射添加到 emulation-mode-map-alists?Emacs
- tensorflow - Tensorflow 中的 argsort 函数是否可微分?
- android - 如何使用导航组件从底部动画在目的地之间滑动?
- apache-spark - 如何理解 Xgboost 模型转储
- javascript - 无效的 LngLat 对象:(NaN, NaN) - getElementById 不返回值
- .net-core - C# .NET Core - 在哪里存储 LARGE 文件以进行集成测试?
- java - For循环初始值不正确
- html - 如何使用 CSS translateZ?