在Lambda集成中使用API Gateway请求模板解析JSON结果为空字符串的问题

0

【以下的问题经过翻译处理】 是否可能将解析后的JSON传递给Lambda?或者API Gateway是否支持仅把字符串传递到必须解析为JSON的集成?

我们的目标是将查询字符串参数 myJson(如 GET /api/endpoint?myJson=%7B%5C%22x%5C%22%3A123%7D)映射到解析后的 JSON 对象,这样就可以在 Lambda 处理程序中访问该对象,而无需(使用 JavaScript) JSON.parse(event.queryStringParameters.myJson)。

然而,用以下的请求模版:


{
    "myParsedJson": "$util.parseJson($input.params('myJson'))"
}

或者

{
    "myParsedJson": "$util.parseJson($util.urlDecode($input.params('myJson')))"
}

得到Lambda 的事件为:

{
    myParsedJson: ''
}

我希望得到的是:

myParsedJson : {"x":123}

任何指导?

profile picture
专家
已提问 5 个月前11 查看次数
1 回答
0

【以下的回答经过翻译处理】 你可以尝试使用 $util.urlDecode($input.params('myJson')) 并提供查询字符串值GET /api/endpoint?myJson=%7B%22x%22%3A123%7D,这样就可以按照你的期望工作了。你不需要担心解析,因为你提供了编码的json字符串值,因此解码后你将得到json字符串。如果你想使用包含“/”的stringify版本,则必须将“/”替换为为空才能得到json字符串。希望能帮到你。

代码片段:

"myParsedJson" : $util.urlDecode($input.params('myJson'))

输出:

myParsedJson : {"x":123}

profile picture
专家
已回答 5 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则