我一直在尝试使用AWS API Gateway将数据推送到AWS SQS,我发送的数据的格式为for i in 1:numPipes loop
connect(ecoCeramicRadiation, module3_PipeComponents[i].port_a);
...
end for;
connect(ecoCeramicRadiation, topFrontExteriorConvection.solid);
。
它看起来像这样:
application/x-www-form-urlencoded
现在,当我从AWS SQS轮询数据时,我看到仅存储了fruits[]: apple
fruits[]: mango
fruits[]: banana
season: summer
,而所有其他都被忽略了。
这是我当前要推入SQS的映射模板:
fruits[]=apple
看起来它有多个Action=SendMessage&MessageBody=$input.body
,但是如果是这样,那么它就不可能捕获进入的随机数据。
我是AWS API Gateway的新手,谢谢。 :D
答案 0 :(得分:0)
尝试
请求:
POST apigateway/stage/resource?query=test
{
"season": "summer",
"list": [apple,mango,banana]
}
映射:
#set($inputRoot = $input.path('$'))
{
"query": "$input.params('query')",
"id": "$inputRoot.season",
"list": $inputRoot.list
}
答案 1 :(得分:0)
经过大量研究和研究,我得以破译了这个谜。
$input.body
的值为:
fruits[]=apple&fruits[]=mango&fruits[]=banana&season=summer
现在仅将MessageBody
推送到SQS中,因此根据我的模板,形成的结果查询字符串为:
Action=SendMessage&MessageBody=fruits[]=apple&fruits[]=mango&fruits[]=banana&season=summer
只有fruits[]=apple
落在MessageBody
之下,其他所有对象都成为单独的查询对象,因此被忽略。
我只需要将模板调整为:
Action=SendMessage&MessageBody=$util.urlEncode($input.body)
因此,生成的查询字符串不再包含&
或=
,并且所有内容都属于MessageBody
欢迎编辑