1.0.4 • Published 8 years ago

express-rate-limit-middleware v1.0.4

Weekly downloads
5
License
MIT
Repository
-
Last release
8 years ago

express-rate-limit-middleware

Installation

npm install --save express-rate-limit-middleware

Usage

  • By default, you only need to pass 2 parameters, limit and reset
  • You can use this middleware as application level (every endpoint will be limited) or router level
  • Application Level Middleware
const express = require('express')
const app = express()
const rateLimiter = require('express-rate-limit-middleware').rateLimit

// limit 1000 request per hour to all url
app.use(rateLimiter.setLimit({
  limit: 1000, 
  reset: '1 hour' // more convenient to set reset
}))
  • Router Level Middleware
const express = require('express')
const router = express.Router()
const rateLimiter = require('express-rate-limit-middleware').rateLimit

// limit 1000 request per hour to all url
router.get('/api', 
	rateLimiter.setLimit({
  		limit: 1000, 
  		reset: '1 hour' // more convenient to set reset
	}),
	(req, res, next) => {
		res.send('OK')
	}
)

Options

  • limit : How many request per interval
  • reset : Interval
  • storageEngine : Storage engine you want to use, we provide 2 storage engine, levelDB and redis. LevelDB storage will be used if you don't pass this parameter
  • Example of using redis
const express = require('express')
const app = express()
const redisStorage = require('express-rate-limit-middleware').redisRateLimit
const redisClient = require('redis-pool-connection')({
  host: '127.0.0.1',
  port: 6379,
  options: {
    db: 1
  }
})
// here i'm using redis-pool-connection module but you can use any redis client
const rateLimiter = require('express-rate-limit-middleware').rateLimit
app.set('port', process.env.PORT || 3000)
app.set('env', process.env.NODE_ENV || 'development')
// Middlewares setup
app.use(logger('dev'))
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({ extended: false }))
app.use(rateLimiter({
  limit: 200, 
  reset: '1 minute'
  storageEngine: redisStorage(redisClient)
}))

Todo

  • Key generator parameter
  • Logging
  • Redis storage plugin

License

MIT © Adhitya Ramadhanus