feat: 新增限流功能 (#718)
* 请求速率限制 * perf: 优化代码 --------- Co-authored-by: ChenZhaoYu <790348264@qq.com>
This commit is contained in:
19
service/src/middleware/limiter.ts
Normal file
19
service/src/middleware/limiter.ts
Normal file
@@ -0,0 +1,19 @@
|
||||
import { rateLimit } from 'express-rate-limit'
|
||||
import { isNotEmptyString } from '../utils/is'
|
||||
|
||||
const MAX_REQUEST_PER_HOUR = process.env.MAX_REQUEST_PER_HOUR
|
||||
|
||||
const maxCount = (isNotEmptyString(MAX_REQUEST_PER_HOUR) && !isNaN(Number(MAX_REQUEST_PER_HOUR)))
|
||||
? parseInt(MAX_REQUEST_PER_HOUR)
|
||||
: 0 // 0 means unlimited
|
||||
|
||||
const limiter = rateLimit({
|
||||
windowMs: 60 * 60 * 1000, // Maximum number of accesses within an hour
|
||||
max: maxCount,
|
||||
statusCode: 200, // 200 means success,but the message is 'Too many request from this IP in 1 hour'
|
||||
message: async (req, res) => {
|
||||
res.send({ status: 'Fail', message: 'Too many request from this IP in 1 hour', data: null })
|
||||
},
|
||||
})
|
||||
|
||||
export { limiter }
|
||||
Reference in New Issue
Block a user