preq
Yet another promising request wrapper.
Features
- ES6
Promise
-based, using the excellent
bluebird by
default - Robustness: retry, timeout and connect timeout support
- Proper error handling: All errors (incl. HTTP responses with code >= 400)
throw exceptions, and can be caught with
Promise.catch()
. This ensures
that all errors are handled, and often cleans up the code by clearly
separating out error handling. The HTTPError
instance has all the
properties of a normal response.
Installation
npm install preq
Usage
var preq = require('preq');
return preq.get({
uri: 'http://google.com/',
headers: {
'x-foo': 'bar'
},
query: {
q: 'foo'
},
})
.then(function(res) {
})
.catch(function(err) {
});
preq
-specific parameters / methods
preq
passes through most options directly to
request, so see its documentation for
advanced options.
Additionally, it defines or modifies these request options:
method
: Lowercase HTTP verbs. Automatically set by the verb methods (preq.get()
,
.post()
etc).uri
: use uri
, not url
.query
: query string parametersbody
: String
, Buffer
or Object
. If an object is supplied, the
serialization depends on the content-type
header. Supported:
application/json.*
multipart/form-data
application/x-www-form-urlencoded
retries
: Maximum number of retries. Exponential back-off is used between retries.timeout
: Total request timeout.connectTimeout
: Maximum time to establish a TCP connection to the host, in
ms. Useful to quickly fail if a node is unreachable at the network level,
without waiting for the full timeout
duration.
Also see the tests for usage examples.