axios是如何解析响应数据中的XML的?

eri*_*ric 2 axios

我试图弄清楚事情是如何发生的:在 node.js 上使用 Axios 时,返回 XML 正文的 HTTP GET 出现在已解析为 JS 对象的响应数据属性中。我对此感到惊讶(并且期望返回需要通过 XML 解析器传递以获取 JS 对象的文本)。我在 Axios 文档中找不到任何关于此功能的提及,也无法在 Axios 源代码中找到对 XML 解析器的引用。

这是 Axios 代码的基本示例:

      let url = `${PB_PID}${values.source}`;
      let result = await http.get(url, {
        timeout: 4000,
        responseType: 'text',
        maxContentLength: 65536
      });
      let data = result.data;  // data is a JS object, parsed from the received XML response
Run Code Online (Sandbox Code Playgroud)

我本来希望data包含文本。它自动解析 XML 并不一定是坏事,但我想了解为什么/如何发生这种情况,原因有多种,包括这可能并不总是期望的结果。

Mic*_*evý 7

Axios 中没有像“自动 XML 解析”这样的东西,所以唯一的解释是您的服务器(您从中请求数据)可以处理多种响应格式(响应格式协商),并且因为您没有发送Accept: 'application/xml'标头,所以默认情况下(取决于服务器实现) )application/json确实是 Axios 使用JSON.parse()方法自动解析的

您可以通过以下方式检查服务器返回的响应的响应类型console.log(result.headers)