5

我从 lambda 后端获取一个字符串值(xml 到字符串),它应该以 application/xml 格式返回给最终用户。我怎样才能做到这一点?

4

2 回答 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 回答