0.0.8 • Published 2 years ago

axios-batch v0.0.8

Weekly downloads
7
License
ISC
Repository
github
Last release
2 years ago

Build Status Coverage Status

Axios-Batch

install to your project with:
npm i axios-batch

Examples

Instantiation without existing axios client:

import { AxiosBatch } from 'axios-batch';

const ab = new AxiosBatch({ baseURL: 'https://yourEndPoint.com' });

// urls can be an array of strings or objects {url: "/posts/1", id: "myposts" };  
const requests = [{url: "/posts/1, id:"first-id"}, {url: "/posts/2", id:"other-id"}];  
const res = await ab.axiosBatch({ urls: requests });

Instantiation with existing axios client:

import { AxiosBatch } from 'axios-batch';
import axios from 'axios';

const client = axios.create({ baseURL: 'https://yourEndPoint.com' });

const ab = new AxiosBatch({ client });

// urls can be an array of strings or objects {url: "/posts/1", id: "myposts" };  
const requests = [{url: "/posts/1, id:"first-id"}, {url: "/posts/2", id:"other-id"}];  
const res = await ab.axiosBatch({ urls: requests });

The returned object has the structure of {allSuccess, allErrors}

allSuccess is an array with the structure of:

[{data: <data-structure returned by api>, id:<id>}]

allErrors is an array with the structure of:

[{error: <error status>, id: <id>}]

Retry conditions

If a requests receives a status code of [408, 500, 502, 504, 522 or 524] upto 3 retries are attempted while increasing the backoff time.

Options

AxiosBatch Class parameters:
| Name | Optional | default Value | |---------------------|----------|------------------------| | client | yes | new axios instance | | headers | yes | empty object | | baseURL | yes | undefined | | backoffInterval | yes | 300 ms | | degradationMax | yes | 6 consecutive failures | | isDegradationSafety | yes | false |

axiosBatch function parameters | Name | Optional | default Value | |------------------|-----------|---------------| | urls | no | none | | parallelRequests | yes | 5 | | batchDelayInMs | yes | 250ms | | headers | yes | empty object | | verbose | yes | false |


issues

using Create-React-App

npm i url and adding a polyfill to either your webpack.config.js or react-app-rewired will fix Can't resolve 'url' in .. errors

fallback: {
        "url": require.resolve("url/")
      },