Skip to content

Node.js module, for multiple and single request, using Promice.

License

Notifications You must be signed in to change notification settings

DarkScorpion/muReq

Repository files navigation

muReq - Multiple Request

Build Status LICENSE Downloads Downloads in Month

Node.js module, for multiple and single requests with using Promises. It takes an array or object with the addreses of the request. Returns Promise with an array or object containing the result. Flexible customization down to the individual fields of the request.

Install

npm install mureq

Examples

Start

var muReqClass = require('mureq');
var muReq = new muReqClass(); //default settings
var muReqCustom = new muReqClass( {errCoef: 0.9} ); //custom settings

or use one-line init script (can use settings object)

var muReq = require('mureq/init')();

Multi request

var url = 'http://test.zz/';

//Multi request (array)
muReq.get( [ url+'1', url+'2', url+'3' ] )
  .then( (result) => {
    console.log(result) //=> [ 'get 1', 'get 2', 'get 3' ]
  })

//Multi request (object)
muReq.get( { a1: url+'1', a2: url+'2', a3: url+'3' } )
  .then( (result) => {
    console.log(result) //=> { a1: 'get 1', a2: 'get 2', a3: 'get 3' }
  })

Single request

muReq.get('http://test.zz/')
  .then( (result) => {
    console.log(result) //=> 'ok'
  })
  .catch( (err) => {
    console.log(err)
  });

Specify the multi request method (get, post, put, delete)

var urls = [ url+'1', url+'2', url+'3' ];

muReq.post(urls)
  .then( (result) => {
    console.log(result) //=> [ 'post 1', 'post 2', 'post 3' ]
  })

muReq.put(urls)
  .then( (result) => {
    console.log(result) //=> [ 'put 1', 'put 2', 'put 3' ]
  })

Customization requests

For custom request, use object with field of module request

//Custom metods
var reqObj = {
  a1: { url: url+'1', method: 'post' },
  a2: url+'2',
  a3: { url: url+'3', method: 'put' }
}
muReq.get(reqObj)
  .then( (result) => {
    console.log(result) //=> { a1: 'post 1', a2: 'get 2', a3: 'put 3' }
  })

Cloning configuration request fields

If you want to make requests with certain fields at different urls, use the static method prepareData

var url = 'http://test.zz/';
var urls = [ url+1, url+2, url+3 ];
var options = {
  method: 'POST',
  headers: {
    'User-Agent': 'request'
  }
};

var result = muReq.prepareData(urls, options);

console.log(result) 
/* => [
  { url: 'http://test.zz/1', { method: 'POST', headers: { 'User-Agent': 'request' } } },
  { url: 'http://test.zz/2', { method: 'POST', headers: { 'User-Agent': 'request' } } },
  { url: 'http://test.zz/3', { method: 'POST', headers: { 'User-Agent': 'request' } } }
]
*/

Settings

You can customizate sittengs for you tasks.

{ //Field of settings and their default value
  errCoef: 0.2, // if errors more 20%, promise return error;
  checkStatusCode: true, // 404 and other status, considered an error
  promise: Promise // native Node.js promise
}
//Customizate example and check settings
muReq.setSettings( {errCoef: 0.8} );
console.log( muReq.getSettings() ); //=> { errCoef: 0.8, checkStatusCode: true }

Use other promise library

You can specify a different Promis library. Bluebird package (v 3.4.7) tested and works.

var muReq = new muReqClass( { promise: require('bluebird') } );

or

muReq.setSettings( { promise: require('bluebird') } );

Errors

Function return body of response, if not errors and status code 200.

var reqData = [
  url+'1',
  url+'/route404',
  'notUrl'
];
muReq.get(reqData)
  .then( (result) => {
    console.log(result) //=> [ 'get 1', Error('Status code, is not 200'), Error('Invalid URI "notUrl"') ]
  })

If not need check status code, change settings.

muReq.setSettings( {checkStatusCode: false} );
muReq.get(reqData)
  .then( (result) => {
    console.log(result) //=> [ 'get 1', 'route 404 data', Error('Invalid URI "notUrl"') ]
  })

About

Node.js module, for multiple and single request, using Promice.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published