将API网关的数组查询参数传递给lambda
问题描述:
我们可以在API网关中创建如下的Rest URL吗?将API网关的数组查询参数传递给lambda
[GET] /员工?ID = 1个& ID = 2 & ID = 3 & ID = 4
我没有找到一个方法来发送ID阵列,并得到该数组为lambda (蟒蛇)函数
答
尝试发送阵列JSON语法如:/employees?ids=['1','2','3']
答
这是很迟,但我有同样的问题,发现问题:
当查询参数是一个列表的类型,其值必须是逗号分隔的项目的字符串。例如,GET/restapis/restapi_id/deployments/deployment_id?embed = apisummary,sdksummary。
Amazon API Gateway不支持表单的嵌套查询参数:GET/team?user [id] = usrid在方法请求上。您可以通过将编码映射作为单个参数传递并将其作为映射模板的一部分或在后端集成中序列化来解决此限制。
所以,你可以使用一个解决办法是重组你的要求,使得:
[GET] /employees?id=1,2,3,4
希望这有助于!
答
这可能在JavaScript
https://www.npmjs.com/package/amazon-api-gateway-querystring
var mapQueryString = require('amazon-api-gateway-querystring');
event.params.querystring = mapQueryString(event.params.querystring);
event.params.querystring = {
"person[0][name]": "Mark",
"person[0][age]": 32,
"person[1][name]": "Luke",
"person[1][age]": 26,
"contacts[home][phone]": "+3333333333",
"contacts[home][email]": "[email protected]",
"contacts[home][twitter]": "@username"
}
// become:
event.params.querystring = {
"person": [{
"name": "Mark",
"age": 32
}, {
"name": "Luke",
"age": 26
}],
"contacts": {
"home": {
"phone": "+3333333333",
"email": "[email protected]",
"twitter": "@username"
}
}
}
帮助