我有一个 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,即使您设法通过映射返回它也是如此。
无论如何,我遇到了类似的问题,这就是我解决它的方法(与上面的论坛链接讨论非常相似)。
- 确保您的 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 字符串。
- 现在,在 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/