axios-rate-limit
Version:
Rate limit for axios.
44 lines (33 loc) • 2.38 kB
Markdown
# axios-rate-limit
[](https://www.npmjs.com/package/axios-rate-limit)
[](https://www.npmjs.com/package/axios-rate-limit)
[](https://bundlephobia.com/package/axios-rate-limit@latest)
[](https://github.com/aishek/axios-rate-limit/actions?query=branch%3Amaster++)
[](https://coveralls.io/r/aishek/axios-rate-limit)
[](https://packagephobia.now.sh/result?p=axios-rate-limit)
[](https://snyk.io/test/npm/axios-rate-limit)
A rate limit for [Axios](https://www.npmjs.com/package/axios): set how many requests per interval should perform immediately, other will be delayed automatically.
## Installing
```bash
npm install axios-rate-limit
```
## Usage
```javascript
import axios from 'axios';
import rateLimit from 'axios-rate-limit';
// sets max 2 requests per 1 second, other will be delayed
// note maxRPS is a shorthand for perMilliseconds: 1000, and it takes precedence
// if specified both with maxRequests and perMilliseconds
const http = rateLimit(axios.create(), { maxRequests: 2, perMilliseconds: 1000, maxRPS: 2 })
http.getMaxRPS() // 2
http.get('https://example.com/api/v1/users.json?page=1') // will perform immediately
http.get('https://example.com/api/v1/users.json?page=2') // will perform immediately
http.get('https://example.com/api/v1/users.json?page=3') // will perform after 1 second from the first one
// options hot-reloading also available
http.setMaxRPS(3)
http.getMaxRPS() // 3
http.setRateLimitOptions({ maxRequests: 6, perMilliseconds: 150 }) // same options as constructor
```
## Alternatives
Consider using Axios built-in [rate-limiting](https://www.npmjs.com/package/axios#user-content--rate-limiting) functionality.