axios-retry
![Build Status](https://travis-ci.org/softonic/axios-retry.svg?branch=master)
Axios plugin that intercepts failed requests and retries them whenever possible.
WARNING: This is a custom implementation of axios-retry that makes it compatible with axios@0.19.0
, and also allows to specify wich requests can
be retried, instead of retrying all of them.
Installation
npm install axios-retry
Usage
import axiosRetry from 'axios-retry';
axiosRetry(axios, { retries: 3 });
axios.get('http://example.com/test')
.then(result => {
result.data;
});
axiosRetry(axios, { retryDelay: axiosRetry.exponentialDelay});
axiosRetry(axios, { retryDelay: (retryCount) => {
return retryCount * 1000;
}});
const client = axios.create({ baseURL: 'http://example.com' });
axiosRetry(client, { retries: 3 });
client.get('/test')
.then(result => {
result.data;
});
Note: Unless shouldResetTimeout
is set, the plugin interprets the request timeout as a global value, so it is not used for each retry but for the whole request lifecycle.
Options
Name | Type | Default | Description |
---|
retries | Number | 3 | The number of times to retry before failing. |
retryCondition | Function | isNetworkOrIdempotentRequestError | A callback to further control if a request should be retried. By default, it retries if it is a network error or a 5xx error on an idempotent request (GET, HEAD, OPTIONS, PUT or DELETE). |
shouldResetTimeout | Boolean | false | Defines if the timeout should be reset between retries |
retryDelay | Function | function noDelay() { return 0; } | A callback to further control the delay between retried requests. By default there is no delay between retries. Another option is exponentialDelay (Exponential Backoff). The function is passed retryCount and error . |
Testing
Clone the repository and execute:
npm test
Contribute
- Fork it:
git clone https://github.com/softonic/axios-retry.git
- Create your feature branch:
git checkout -b feature/my-new-feature
- Commit your changes:
git commit -am 'Added some feature'
- Check the build:
npm run build
- Push to the branch:
git push origin my-new-feature
- Submit a pull request :D