2015-07-27 6 views
0

Я хочу использовать модуль иглы для Node.js в потоковом режиме, подобный этот пример из игольчатых документов:Как получить заголовки ответов при использовании needle.js в потоковом режиме?

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); 
    } 
}); 

Это позволяет мне читать тело ответа от потока.

Как получить доступ к заголовкам ответа?

ответ

1

От чтения источника, игла испускает два события, header и headers.

Интересуюсь только заголовки:

var stream = needle.get(someURL); 

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

или код состояния и заголовки:

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

Вы можете прочитать заголовок, прежде чем поток начнется, если вы захотите.

var needle = require('needle'); 
var url = 'http://www.stackoverflow.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.stackoverflow.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.stackoverflow.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.stackoverflow.com'; 

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

Спасибо за ваш ответ, который подробно и четко изложены. Тем не менее, первые два фрагмента делают дополнительный запрос HEAD, что не то же самое, что получение заголовков для данного запроса. Второе два эффективно возвращаются к модели обратного вызова, и это не совсем то, что я искал. –

Смежные вопросы