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

接口调用限制次数

作者: 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

相关文章

  • 接口调用次数限制

    项目中出现这样的一个需求: 现在有一个发送验证码的接口,验证码是使用的腾讯云的发送验证码,费用取决于发送验证码的...

  • 接口调用限制次数

    laravel中间件throttle 频率限制的应用还会回传三个响应头: X-RateLimit-Limit告诉我...

  • lumen接口访问频率throttle

    由于公司项目对外提供开放平台接口,所以为了防止第三方调用接口太频繁给服务器带来过大的压力,需要对接口调用次数限制,...

  • 马氏架构心得

    我们在生产中会遇到这样的场景: 1:接口限速:针对每个接口分不同维度的限制调用次数: 如:请求url -/orde...

  • 调用企微接口获取access_token,返回接口调用频次超限

    可能原因: access_token获取受频率限制: 如果在一个小时内,调用gettoken接口失败次数过多,1小...

  • 接口如何防刷

    问题 接口如何防刷 好多厂子都会问你这个问题,基本上大多数处理方式都是后端工程师对用户的接口调用次数做限制,其实可...

  • python限制函数调用次数

    使用注解实现。注解可以是函数,也可以是类的实例。只要是可调用的即可。

  • 2.8 调用次数的限制

    在record和verify阶段可以使用times,minTimes,maxTimes来限制。默认为minTime...

  • API 调用次数限制实现

    在开发接口服务器的过程中,为了防止客户端对于接口的滥用,保护服务器的资源, 通常来说我们会对于服务器上的各种接口进...

  • SpringBoot的AOP面向切面

    1.前言 遇到任务要求:针对接口封装,所有的接口都要进行封装,并记录接口的调用次数,接口调用的成功与失败error...

网友评论

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

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