在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}

任何指导?

1 Antwort
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
EXPERTE
beantwortet vor 6 Monaten

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen