Axios plugin that intercepts failed requests and retries them whenever possible, and runs concurrent requests after a set timeout.
npm install @vtex/axios-concurrent-retryAxios plugin that intercepts failed requests and retries them whenever possible.
``bash`
npm install @vtex/axios-concurrent-retry
`js
// CommonJS
// const axiosRetry = require('@vtex/axios-concurrent-retry');
// ES6
import axiosRetry from '@vtex/axios-concurrent-retry';
axiosRetry(axios, { retries: 3 });
axios.get('http://example.com/test') // The first request fails and the second returns 'ok'
.then(result => {
result.data; // 'ok'
});
// Exponential back-off retry delay between requests
axiosRetry(axios, { retryDelay: axiosRetry.exponentialDelay});
// Custom retry delay
axiosRetry(axios, { retryDelay: (retryCount) => {
return retryCount * 1000;
}});
// Works with custom axios instances
const client = axios.create({ baseURL: 'http://example.com' });
axiosRetry(client, { retries: 3 });
client.get('/test') // The first request fails and the second returns 'ok'
.then(result => {
result.data; // 'ok'
});
// Allows request-specific configuration
client
.get('/test', {
'axios-retry': {
retries: 0
}
})
.catch(error => { // The first request fails
error !== undefined
});
`
Note: the plugin interprets the request timeout as a global value, so it is not used for each retry but for the whole request lifecycle.
| Name | Type | Default | Description |
| --- | --- | --- | --- |
| retries | Number | 3 | The number of times to retry before failing |Function
| retryCondition | | 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). |Function
| retryDelay | | 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. |
Clone the repository and execute:
`bash`
npm test
1. Fork it: git clone https://github.com/softonic/axios-retry.gitgit checkout -b feature/my-new-feature
2. Create your feature branch: git commit -am 'Added some feature'
3. Commit your changes: npm run build
4. Check the build: git push origin my-new-feature`
4. Push to the branch:
5. Submit a pull request :D