节点JS针后响应体返回缓冲区

时间:2017-08-09 23:44:56

标签: node.js rest needle.js

我目前正在尝试使用针编写的node.js应用程序调用远程API。 API要求我将所有请求作为发布请求。当我尝试在控制台日志中打印出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());

此外,我尝试使用附加的.toString()方法打印resp,resp.body,body和所有上述项目。我只是希望能够看到API POST调用返回的响应数据。

1 个答案:

答案 0 :(得分:0)

问题在于针提供了为REST请求创建标头的快捷方式。这些都覆盖了我的标题并导致返回压缩的响应正文。我只是删除了我的自定义标题,而是使用了Needle的格式:

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

然后我将我的身体移动到一个单独的阵列:

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

最后我创建了请求:

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

这使我能够毫无问题地访问响应主体。