軽量HTTP要求モジュール

それはすべて、私がTelegramのAPIに初めて出会ったときに、ここでTelegramのボットを作成するタスクを持っているという事実から始まりました。 彼と一緒に仕事をするために、今日はとても人気のあるRequestモジュールを選びました。



ボットが作成されました。 APIへのすべてのリクエストで彼のメモリ消費量が増加し、問題の重いリクエストをキャッチしていることに気づき、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) } })
      
      







ジョンソン



モジュールは主に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パラメーターを使用してオブジェクトに等しいクエリを渡し、リクエストポートを変更するには、portパラメーターを渡すだけで十分です。

 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



All Articles