这里maxCount并不生效

来源:11-3 如何对接口限流,避免无限制请求(开发egg-interfaceLimit插件)

骑猪跑的程序员

2020-11-13

只要在限定时间内,可以无限次进行请求。只是在到时间了才进行判断。
比如设置time=3000, maxCount=10。但是在3秒内是可以发起超过10次请求的,所以maxCount是不生效的.

写回答

1回答

夏小宅

2020-11-14

之前是按照“超过3秒,计数器大于3,则提示请求频繁”这个逻辑处理的;如果期望期望“在3秒内,计数器大于3,则提示请求频繁”,可以参考如下的代码

if(new Date().getTime() - firstTime < options.time ){
    if(count >= options.maxCount){
        count = 0;
        firstTime = new Date().getTime();
        ctx.body = {
            status: 500,
            errMsg: '请求太频繁'
        };
        return;
    }else {
        count++;
        await next();
    }
}else {
    count = 0;
    firstTime = new Date().getTime();
    await next();
}


1
1
奇迹11321
这样写也不对吧
2021-11-30
共1条回复

React+React Hook+Egg造轮子 全栈开发旅游电商应用

造好轮子+前后端复杂业务处理,解锁前端高手必备技能。

479 学习 · 137 问题

查看课程