@springworks/api-client
Module for sending requests to other APIs through a circuit breaker created by @springworks/circuit-breaker-factory.
yarn add @springworks/api-client
API
createClient(params)
Creates a api client using the provided config. Returns an object that exposes a sendRequest(opts, expected_status_codes)
function that returns a Promise.
params
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 |
sendRequest(options, expected_status_codes)
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,
num_buckets: 10,
timeout_duration: 3000,
error_threshold: 50,
volume_threshold: 5,
};
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',
};
var expected_status_codes = [200];
api_client
.sendRequest(options, expected_status_codes)
.then(function (response_body) {
})
.catch(function (err) {
});