Azure Functions return XML 可以吗?

Can Azure Functions return XML?

正在寻找从 Azure 函数返回 XML 的 Node.js 示例。我下面的代码 returns xml 的字符串,但响应 Content-Type 设置为 text/plain; charset=utf-8 而不是 text/xml;字符集=utf-8

index.js

module.exports = function(context, req) {
    var xml = '<?xml version="1.0" encoding="UTF-8"?><Response><Say>Azure functions!</Say></Response>';

    context.res = {
        contentType: 'text/xml',
        body: xml
    };

    context.done();
};

这是绑定。

function.json

{
  "bindings": [
    {
      "authLevel": "function",
      "type": "httpTrigger",
      "direction": "in",
      "name": "req"
    },
    {
      "type": "http",
      "direction": "out",
      "name": "res"
    }
  ],
  "disabled": false
}

马克,

当然!您已经很接近了,但是您可以看到一个示例,说明如何在响应中设置内容类型 here

下一个版本还有一个修复程序,将启用适当的内容协商,这将消除在许多情况下显式设置该内容的需要。

为了使 Fabio 的回答更加完整,更新后的代码如下:

module.exports = function(context, req) {
    var xml = '<?xml version="1.0" encoding="UTF-8"?><Response><Say>Azure functions!</Say></Response>';

    context.res = {
        "headers" : { 
            "Content-Type" : 'text/xml'
        },
        "body": xml,
        "isRaw" : true
    };

    context.done();
};

您不需要更改 function.json。

"headers" 块可用于设置您想要 return 的任何 headers。请注意,如果您在 Function App 的设置中进行了任何设置以设置 CORS 数据,那么任何与 CORS 相关的 headers 都将被覆盖。您要么必须在 Function App Settings 中设置 CORS 数据,要么在您的代码中手动处理 CORS。

需要将 "isRaw" 设置为 true,这样 Azure Functions 就不会试图智取你并 XML 对你已经编码的数据进行编码。

仅供参考,根据我的经验,Azure Functions 正在积极开发并经常更改。因此,如果您遇到问题或此代码不再有效,您最好的选择是; is to search/open an issue on Github.