Node JS Needle Post 响应主体作为缓冲区返回

Node JS Needle Post Response Body Returned as Buffer

我目前正在尝试从我正在使用 needle 编写的 node.js 应用程序调用远程 API。 API 要求我将所有请求作为 post 请求。当我尝试在控制台日志中打印出 response.body 时,唯一打印出的是 <Buffer >

我的node.js代码如下:

var needle = require('needle');
var options = {
    data: { "username": "**********", "password":"******************" },
    headers: {  "Accept":"application/json", "Accept-Encoding":"gzip,deflate", "Content-Type":"application/json" }
};
needle.post('http://www.linxup.com/ibis/rest/linxupmobile/map', options, function(err, resp, body) {
  // you can pass params as a string or as an object.
    console.log(body.toString());

此外,我尝试打印 resp、resp.body、正文和所有上述项目,并附加了 .toString() 方法。我只想能够看到从 API POST 调用返回的响应数据。

问题在于 needle 提供了为您的 REST 请求创建 header 的快捷方式。这些覆盖了我的 headers 并导致返回压缩响应 body。我只是删除了我的自定义 header 并改用 Needle 的格式:

var options = {
    compressed: true,
    accept: 'application/json',
    content_type: 'application/json'
};

然后我将我的 body 移到一个单独的数组中:

var data = {
  "username": "***********", "password":"*********"
}

最后我创建了请求:

needle.post('http://www.linxup.com/ibis/rest/linxupmobile/map', data, options, function(err, resp, body) {
...
}

这让我可以毫无问题地访问响应 body。