request-options
Default options object generator written in ES6 for the popular NodeJS package Request, providing a generic set of request options
for the request package that can be augmented by providing options
or defaults
to overwrite.
Install
$ npm install -S request-options
Usage
requestOptions( [options][, defaults] )
@param {Object} [options]
@param {Object} [defaults]
@returns {Object}
options
Any valid request options object
defaults
These defaults are intended for communication with APIs/services that accept and return JSON:
- json: true
- gzip: true
- timeout: 10000
The defaults can be overwritten by providing your own defaults
parameter object with the new values. Any additional values will be ignored, use the options
object for your extended options.
Examples
The basic use case will return true for json and gzip, as well as a timeout of 10 seconds
const requestOptions = require('request-options');
const request = require('request');
function responseHandler (err, res, body) {
}
request(requestOptions(), responseHandler);
json: true,
gzip: true,
timeout: 10000
}
Adding additional options
const requestOptions = require('request-options');
const request = require('request');
const options = {
method: 'get',
url: 'https://api.yoursite.com/endpoint'
};
function responseHandler (err, res, body) {
}
request(requestOptions(options), responseHandler);
method: 'get',
url: 'https://api.yoursite.com/endpoint',
json: true,
gzip: true,
timeout: 10000
}
Overwriting the defaults
const requestOptions = require('request-options');
const request = require('request');
const options = {
method: 'get',
url: 'https://api.yoursite.com/endpoint'
};
const defaults = {
gzip: false,
timeout: 20000
};
function responseHandler (err, res, body) {
}
request(requestOptions(options, defaults), responseHandler);
method: 'get',
url: 'https://api.yoursite.com/endpoint',
json: true,
gzip: false,
timeout: 20000
}
Notice how the default json value is still present and left unchanged
Tests
The test suite is located in the test/
directory. All new features are
expected to have corresponding test cases. Ensure that the complete test suite
passes by executing:
$ npm test
License
MIT License
Copyright (c) 2017 Nigel Horton