我从 lambda 后端获取一个字符串值(xml 到字符串),它应该以 application/xml 格式返回给最终用户。我怎样才能做到这一点?
问问题
5645 次
2 回答
5
您可以指定返回 XML 的集成响应,以及使用从 Lambda 返回的对象格式化 XML 的映射模板。
我不相信有默认格式转换为 XML。一个简单的映射模板可能是这样的:
#set($root = $input.path('$'))
<stuff>
<message>$root.message</message>
<sourceIp>$context.identity.sourceIp</sourceIp>
<outputs>
#foreach($key in $root.keySet())
<output>
<key>$key</key>
<value>$root.get($key)</value>
</output>
#end
</outputs>
</stuff>
于 2015-08-17T23:52:57.450 回答
1
参考本文档,“访问 $util 变量”部分通过简单的 JSON 到 XML 转换解决了挑战。我确实尝试过这里前面给出的映射模板,但它对我不起作用。
在我的例子中,我的 JSON 响应负载是以下形式:
[
{
"key1": "val1",
"key2": "val2",
"key3": "val3"
},
{
"key1": "val1",
"key2": "val2",
"key3": "val3",
"key4": "val4"
}
]
这是处理它的映射模板:
#set ($arr = $util.parseJson($input.path('$')))
<responses>
#foreach($c in $arr)
<response>
#foreach ($k in $c.keySet())
<$k>$c.get($k)</$k>#end
</response>
#end
</responses>
关键是获取真正的 JSON/Java 对象的 parseJson。之后就一帆风顺了。
输出形式为:
<responses>
<response>
<key1>val1</key1>
...
</response>
...
</responses>
我希望这有帮助。
于 2016-05-06T19:43:46.817 回答