Легкий Модуль Для Http-Запросов

Все началось с того, что передо мной стояла задача написать бота для Telegram, здесь я впервые с ними столкнулся.

API .

Для работы с ним я выбрал популярный на данный момент модуль Запрос .

Бот был написан.

Я заметил, что потребление памяти у него росло с каждым запросом к API. Выявив проблему с тяжеловесным Request, я решил попробовать написать свой модуль для HTTP-запросов, максимально простой, лёгкий и быстрый.

В результате вышел самый компактный модуль (сейчас основной файл модуля содержит менее 200 строк) и не лишенный функционала, который я назвал tiny_request.



Простота использования

Для обычного GET-запроса достаточно написать всего несколько строк:
  
  
  
  
  
  
   

var req = require('tiny_request') req.get(' http://google.com ', function(body, response, err){ if (!err && response.statusCode == 200) { console.log(body) } })



JSON

Поскольку модуль в первую очередь будет использоваться для работы с API, я решил, что нужен простой механизм работы с json. Чтобы автоматически десериализовать полученный ответ от сервера, достаточно передать параметр json: true

var req = require('tiny_request') req.get({ url: ' http://test.com/json ', json: true}, function(body, response, err){ if (!err && response.statusCode == 200) { console.log(body) //body now is parsed JSON object } })



GET-запросы

Для запроса с GET-параметрами достаточно передать запрос, равный объекту с GET-параметрами; также, чтобы изменить порт запроса, достаточно передать параметр порта:

req.get({ url: ' http://test.com ', query: { test: 'test' }, port: 8080}, function(body, response, err){ if (!err && response.statusCode == 200) { console.log(body) } })



POST-сообщение

Где бы мы были без POST-запросов и передачи файлов?

var data = { image: { value: fs.createReadStream('photo.png'), filename: 'photo.png', contentType: 'image/png' }, test: 'test' } req.post({ url: ' http://test.com ', multipart: data }, function(body, response, err){ if (!err && response.statusCode == 200) { console.log(body) } })



ПОСТ-формы

Работать с формами тоже очень просто:

var form = { test: 'test' } req.post({ url: ' http://test.com ', form: form}, function(body, response, err){ if (!err && response.statusCode == 200) { console.log(body) } })



HTTP-заголовки

Чтобы добавить заголовки, просто передайте параметр headers:

var headers = { 'Test-Header': 'test' } req.post({ url: ' http://test.com ', headers: headers}, function(body, response, err){ if (!err && response.statusCode == 200) { console.log(body) } })



Трубный поток

Работать с потоками тоже просто:

req.get({url: url, pipe: stream})

Все исходники можно найти на GitHub: github.com/Naltox/tiny_request Теги: #node.js #Request #node.js #JavaScript #node.js
Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.