xml - AWS API 网关返回 XML

标签 xml amazon-web-services xml-parsing aws-lambda aws-api-gateway

我有一个 lambda 函数,它向 API 网关返回一个字符串(xml 到字符串)。现在 API 网关返回字符串,但它不是有效的 XML。 我已经将内容类型设置为 application/xml。

XML 看起来像这样:

"<TEST xmlns:ns0=\"https://www.w3.org/2001/XMLSchema-instance\" version=\"3.0\" >\n  <InLine>\n  <tag1>valuetag1</tag1>\n</InLine>\n   \n</TEST>"

我该如何解决这个问题?

最佳答案

论坛帖子很有用。另请注意,您粘贴的字符串不是有效的 XML,即使您设法通过映射返回它也是如此。

无论如何,我遇到了类似的问题,这就是我解决它的方法(与上面的论坛链接讨论非常相似)。

  1. 确保您的 Lambda 返回可以转换为 XML 的内容。如果您的 lambda 在 python 中,您的处理程序可能是这样的:

def lambda_handler(event, context): resp = {"body" : "<FooResult xmlns='http://someorg.com/xml/1.0'><Message>All is well</Message></FooResult>"} return resp

请注意,我已将实际响应 XML 字符串包装在 json 中。这个 json 元素的键是“body”。该键的值是双引号内的有效 XML 字符串。

  1. 现在,在 API 网关的 API 的集成响应中添加一个响应主体映射模板。这应该是模板的内容:

#set($inputRoot = $input.path('$')) $inputRoot.body

此模板将在您的 JSON 中的键“body”中返回有效的 XML 值。

现在您只需在“方法响应”部分添加一个 Content-Type header 和 application/xml 的响应主体,您应该会获得有效的 XML。

请记住在您的客户端上设置接受 header 以接受 XML。干杯

关于xml - AWS API 网关返回 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44485324/

相关文章:

java - 使用 DOM 解析器时获取 XML 子节点

python - xpath 中没有条件

amazon-web-services - Docker-机器AWS策略

amazon-web-services - aws lambda 函数可以发布到私有(private)网络中的端点吗?

node.js - 如何使用 Node xml2js 模块转义字符?

xml - 为什么我用 Perl XML::Simple 得到这个 "not an array reference"?

php - XML 提要数据中的无效字符

c# - ASP.NET MVC 网络 API : application/xml PUT request body is null on server side

java - Spark : driver/worker configuration. 驱动程序是否在主节点上运行?

Prolog 不进行 XML 解析