Всем привет! Это четвертый пост в моей новой серии статей Node.js модули, о которых вы должны знать.
Первый пост был про dnode — фристайл RPC библиотеку для node.js. Второй пост был посвящен optimist — легковесному парсеру командной строки для node.js. Третий был про lazy — ленивые списки для node.js.
В этой заметке я хочу представить классный модуль request от Mikeal Rogers. request — это армейский нож HTTP стриминга.
Оцените:
var fs = require('fs')
var request = require('request');
request('http://google.com/doodle.png').pipe(
fs.createWriteStream('doodle.png')
)
Отвал башки! Вы только что перенаправили ответ для HTTP-запроса к
http://google.com/doodle.png
в локальный файл doodle.png
!
Вот еще более крутой пример:
var fs = require('fs')
var request = require('request');
fs.readStream('file.json').pipe(
request.put('http://mysite.com/obj.json')
)
Опять отвал башки! Тут происходит перенаправление локального файла file.json
в виде HTTP PUT запроса по адресу http://mysite.com/obj.json
.
И еще немного крутизны:
var request = require('request');
request.get('http://google.com/img.png').pipe(
request.put('http://mysite.com/img.png')
)
Снова улет! Этот код перенаправляет HTTP GET запрос к
http://google.com/img.png
в виде HTTP PUT запроса к
http://mysite.com/img.png
.
В Browserling, мы используем этот модуль для стримминга данных в/из couchdb. Вот еще один пример, который сохраняет JSON-документ в тестовую БД couchdb:
var request = require('request')
var rand = Math.floor(Math.random()*100000000).toString()
request({
method: 'PUT',
uri: 'http://mikeal.iriscouch.com/testjs/' + rand,
multipart: [
{
'content-type': 'application/json',
'body': JSON.stringify({
foo: 'bar',
_attachments: {
'message.txt': {
follows: true,
length: 18,
'content_type': 'text/plain'
}
}
})
},
{ body: 'I am an attachment' }
]
}, function (error, response, body) {
if(response.statusCode == 201){
console.log('document saved as: http://mikeal.iriscouch.com/testjs/'+ rand);
} else {
console.log('error: '+ response.statusCode);
console.log(body);
}
})
Установить модуль можно, как всегда, через npm:
npm install request
До новых встреч!