@capriza/http-utils

HTTP Request utils that handles, request-response, errors, concurrency, priority and authentication

Usage no npm install needed!

<script type="module">
  import caprizaHttpUtils from 'https://cdn.skypack.dev/@capriza/http-utils';
</script>

README

@capriza/http-utils

Table Of Contents

Overview

Http requests client based on axios.
The Http-Utils library supports rate limits, concurrent requests, retry requests, request prioritization etc.

Installing

$ npm install @capriza/http-utils

Instance Configuring

An http-utils instance can be configured with the following properties:

headers

default: { Accept: "application/json", Content-Type: "application/json" }

timeout

Maximum duration (milliseconds) allowed for request execution
default: 30000

baseUrl

Base URL for requests executed by this instance.

auth

Request authentication by username and password, formatted as follows:

{ username : 'aaa', password : '123456' }

maxRetries

Maximum retries permitted in case of server or network errors, depending on settings of retryStatusCodes and retryNetworkErrors, respectively.
default: 0

retryInterval

Amount of time (milliseconds) between retries.

retryNetworkErrors

If one of these values is received as the error code of the response, a retry of the request will be triggered.
default: ["ECONNABORTED", "ECONNRESET"]

retryStatusCodes

If one of these values is received as the status code of the response, a retry of the request will be triggered.
default: [502, 503, 504]

limit

Maximum number of http requests per interval.
default: Infinity

interval

Amount of time (milliseconds) during which the http requests limit can to be executed.
default: 1000

maxConcurrent

Number of requests allowed to execute simultaneously
default: Infinity

Instance Methods

The available instance methods are listed below:

httpClient.get(url, data, props)
httpClient.post(url, data, props)
httpClient.put(url, data, props)
httpClient.patch(url, data, props)
httpClient.head(url, data, props)

Examples

Instance with base URL, 5 http requests allowed every 10 seconds, allowing 3 retries in case of network or server (502, 503) errors.

const HttpUtils = require('@capriza/http-utils');
const httpClient = new HttpUtils({
    baseUrl: 'https://api.xxxxxxx.xx',
    limit: 5,
    interval: 10 * 1000,
    maxRetries: 3,
    retryStatusCodes: [502, 503]
});

Performing a GET request with priority

const HttpUtils = require('@capriza/http-utils');
const httpClient = new HttpUtils( { baseUrl: 'https://api.xxxxxxx.xx' } );
try {
    let result = await httpClient.get('/route', {}, { priority: true })
    console.log(result);
} catch(ex) {
    console.error(ex);
}

Performing a POST request

const HttpUtils = require('@capriza/http-utils');
const headers = {
   Content-Type: "application/x-www-form-urlencoded"
};

const httpClient = new HttpUtils( {
    baseUrl: 'https://api.xxxxxxx.xx',
    headers,
    retryStatusCodes: [502, 503]
    maxRetries: 3
});
try {
    let result = await httpClient.post('/route', { data: 'sessionId=aaa-bbb-ccc&token=xxx-yyy-zzz' });
    console.log(result);
} catch(ex) {
    console.error(ex);
}