在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 個月前檢視次數 14 次
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 個月前

您尚未登入。 登入 去張貼答案。

一個好的回答可以清楚地回答問題並提供建設性的意見回饋,同時有助於提問者的專業成長。

回答問題指南