Module for sending requests to other APIs through a circuit breaker created by @springworks/circuit-breaker-factory.
yarn add @springworks/api-client
Creates a api client using the provided config. Returns an object that exposes a sendRequest(opts, expected_status_codes)
function that returns a Promise.
Name | Type | Description | Required |
---|---|---|---|
base_url | String | Fully qualified uri string used as the base url | Yes |
circuit_breaker_config | Object | Optional. The circuit breaker config. Please refer to this documentation for details. | Yes |
logger | Logger | See @springworks/logger-interfaces
|
Yes |
auth | Object | An object with username and password . |
No |
opt_options | Object | No | |
opt_options.opt_auth | Object | Optional authentication object that will be used for all requests sent towards the provided base_url . If there is an auth property in the options send in sendRequest then opt_auth gets overwritten. |
No |
opt_options.opt_timeout | Number | Timeout (millis) used in all request from created client. | No |
Sends the request based on the provided options and returns a resolved/rejected Promise.
Options
Parameter | Description | Type | Required |
---|---|---|---|
endpoint_uri | URI of the endpoint that's to be reached | string | Yes |
expected_status_codes
Type | Description | Entries Type | Entries Range | Required |
---|---|---|---|---|
Array | Expected status codes by the invoker of this function | Number | [100, 500) | Yes |
Example Usage
var api_client_factory = require('@springworks/api-client');
var config = {
source_name: 'my-api',
target_name: 'facebook-graph-api',
window_duration: 1000, // optional
num_buckets: 10, // optional
timeout_duration: 3000, // optional
error_threshold: 50, // optional
volume_threshold: 5, // optional
};
var api_client = api_client_factory.createClient({
base_url: 'http://api.machinetohuman.com',
circuit_breaker_config: config,
logger: logger,
});
var options = {
endpoint_uri: '/vehicles/1234',
// other request options
};
var expected_status_codes = [200];
api_client
.sendRequest(options, expected_status_codes)
.then(function (response_body) {
// do your thing;
})
.catch(function (err) {
// err.code is the statusCode of the response or 417 (if responded with code < 400)
});