我试图弄清楚事情是如何发生的:在 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
我希望 data
包含文本。它自动解析 XML 不一定是坏事,但我想了解为什么/如何发生这种情况,原因有很多,包括这可能并不总是期望的结果。
最佳答案
Axios 中没有“自动 XML 解析”之类的东西,所以唯一的解释是您的服务器(您从中请求数据)可以处理多种响应格式(响应格式协商)并且因为您没有发送 Accept: ' application/xml'
header ,默认(取决于服务器实现)是 application/json
确实由 Axios 使用 JSON.parse()
方法自动解析
您可以通过console.log(result.headers)
检查服务器返回的响应类型
关于axios - Axios 是如何解析响应数据中的 XML 的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64053703/