美文网首页
接口调用限制次数

接口调用限制次数

作者: swoft_ | 来源:发表于2019-08-22 09:17 被阅读0次

    laravel中间件throttle

    频率限制的应用还会回传三个响应头:

    X-RateLimit-Limit告诉我们在指定时间内允许的最大请求次数,
    X-RateLimit-Remaining指的是在指定时间段内剩下的请求次数,
    Retry-After指的是距离下次重试请求需要等待的时间(s)

    // 默认1分钟60次
    Route::group(['prefix'=>'api','middleware'=>'throttle'], function(){
        Route::get('users', function(){
            return \App\User::all();
        });
    });
    

    访问路由/api/users时你会看见响应头里有如下的信息:

    X-RateLimit-Limit: 60
    X-RateLimit-Remaining: 58

    如果请求超频,响应头里会返回Retry-After:

    Retry-After: 58
    X-RateLimit-Limit: 60
    X-RateLimit-Remaining: 0

    上面的信息表示58秒后页面或者API的访问才能恢复正常。

    定义频率和重试等待时间
    频率默认是60次可以通过throttle中间件的第一个参数来指定你想要的频率,重试等待时间默认是一分钟可以通过throttle中间件的第二个参数来指定你想要的分钟数。

    Route::group(['prefix'=>'api','middleware'=>'throttle:5'],function(){
        Route::get('users',function(){
            return \App\User::all();
        });
    });//频次上限5
    
    Route::group(['prefix'=>'api','middleware'=>'throttle:5,10'],function(){
        Route::get('users',function(){
            return \App\User::all();
        });
    });//频次上限5,重试等待时间10分钟
    
    

    参考:https://juejin.im/post/5b29ccb5e51d4558a846bd93

    用redis实现API访问频率的限制

    #coding:utf-8
    #!/usr/bin/env python
    
    import redis,sys
    
    def api_count_check(IP):
        key=IP+':api_name:api_count'
        pool = redis.ConnectionPool(host='192.168.64.18', port=6379,db=0,password=123)
        r = redis.Redis(connection_pool=pool)
        limit=100
        expired_time=60
        check=r.exists(key)
        isExcced=0
        if check==True:
            r.incr(key)
            count = int(r.get(key))
            if count > limit:
                isExcced=1
                sys.exit(0)
        else:
            r.set(key,1)
            r.expire(key,expired_time)
        return isExcced
    
    if __name__ == '__main__':
        for i in range(1,101):
            api_count_check('user1')
            # API function
            print 'this is the API function!'
    

    参考:https://my.oschina.net/aibati2008/blog/692910

    相关文章

      网友评论

          本文标题:接口调用限制次数

          本文链接:https://www.haomeiwen.com/subject/roegsctx.html