在流模式下使用 needle.js 时如何获得响应 headers?

How to get response headers when using needle.js in streaming mode?

我想在流模式下为 node.js 使用 needle 模块,类似于 needle 文档中的示例:

var stream = needle.get('http://www.as35662.net/100.log');

stream.on('readable', function() {
  var chunk;
  while (chunk = this.read()) {
    console.log('got data: ', chunk);
  }
});

这允许我从流中读取响应 body。

如何访问响应 headers?

如果需要,您可以在直播开始前阅读 header。

var needle = require('needle');
var url = 'http://www.whosebug.com';

    needle.head(url, {method: 'HEAD'}, function (err, response) {
        if (!err && response.statusCode == 200) {
            console.log((JSON.stringify(response.headers)));
        }

    });

或在请求中

var request = require('request');
var url = 'http://www.whosebug.com';

request(url, {method: 'HEAD'}, function (err, response) {
    if (!err && response.statusCode == 200) {
        console.log((JSON.stringify(response.headers)));
    }    
});

否则你可以流后阅读。

var needle = require('needle');
var url = 'http://www.whosebug.com';

var stream = needle.get(url, function (err, response) {
    if (!err && response.statusCode == 200)
    console.log((JSON.stringify(response.headers)));
});

但这对请求也是有效的。

var request = require('request');
var url = 'http://www.whosebug.com';

var stream = request.get(url, function (err, response) {
    if (!err && response.statusCode == 200)
    console.log((JSON.stringify(response.headers)));
});

从阅读源代码开始,needle 发出了两个事件,headerheaders

仅headers感兴趣:

var stream = needle.get(someURL);

stream.on('headers', function(headers) {
    // do something with the headers
});

或状态码和headers:

stream.on('header', function(statusCode, headers) {
    if (statusCode != 200) {
        // scream and panic
    }
});