AWS API 网关只允许表单数据的第一个元素而忽略其余部分
AWS API Gateway only allows the first element of the form data and ignores the rest
我一直在尝试使用 AWS API 网关将数据推送到 AWS SQS,我发送的数据是 application/x-www-form-urlencoded
.
的形式
它看起来有点像这样:
fruits[]: apple
fruits[]: mango
fruits[]: banana
season: summer
现在,当我从 AWS SQS 轮询数据时,我看到只有 fruits[]=apple
已存储,所有其他都被忽略。
这是我当前要推送到 SQS 的映射模板:
Action=SendMessage&MessageBody=$input.body
看起来它有多个 $input.body
但如果是这样的话,那么它就不可能捕获传入的随机数据。
我是 AWS API 网关的新手,在此先感谢。 :D
试试这个
要求:
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
}
经过大量研究,我终于解开了这个谜团。
$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
欢迎编辑
我一直在尝试使用 AWS API 网关将数据推送到 AWS SQS,我发送的数据是 application/x-www-form-urlencoded
.
它看起来有点像这样:
fruits[]: apple
fruits[]: mango
fruits[]: banana
season: summer
现在,当我从 AWS SQS 轮询数据时,我看到只有 fruits[]=apple
已存储,所有其他都被忽略。
这是我当前要推送到 SQS 的映射模板:
Action=SendMessage&MessageBody=$input.body
看起来它有多个 $input.body
但如果是这样的话,那么它就不可能捕获传入的随机数据。
我是 AWS API 网关的新手,在此先感谢。 :D
试试这个
要求:
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
}
经过大量研究,我终于解开了这个谜团。
$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
欢迎编辑