Laravel5.2新特性系列--访问频率限制中间件throttle的使用
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Laravel5.2新特性系列--访问频率限制中间件throttle的使用,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1969字,纯文字阅读大概需要3分钟。
内容图文
![Laravel5.2新特性系列--访问频率限制中间件throttle的使用](/upload/InfoBanner/zyjiaocheng/208/f56c0c6758be4aaf97394ae1dffdb1c8.jpg)
1、访问频率限制概述
频率限制经常用在API中,用于限制独立请求者对特定API的请求频率。例如,如果设置频率限制为每分钟1000次,如果一分钟内超过这个限制,那么服务器就会返回 429: Too Many Attempts. 响应。
通常,一个编码良好的、实现了频率限制的应用还会回传三个响应头: X-RateLimit-Limit , X-RateLimit-Remaining 和 Retry-After (如果达到限制次数只能获取到 Retry-After 头)。 X-RateLimit-Limit 告诉我们在指定时间内允许的最大请求次数, X-RateLimit-Remaining 指的是在指定时间段内剩下的请求次数, Retry-After 指的是距离下次重试请求需要等待的时间(s)。
注意:每个API都会选择一个自己的频率限制时间跨度,GitHub选择的是1小时,Twitter选择的是15分钟,Laravel中间件选择的是1分钟。
2、如何使用Laravel的访问频率限制中间件
在Laravel5.2的新特性中,你可以使用一个新的中间件 throttle ,让我们先来看看这个中间件的用法,首先我们定义一个路由规则如下:
Route::group(['prefix'=>'api'],function(){ Route::get('users',function(){ return \App\User::all(); });});
然后我们将中间件 throttle 添加到其中, throttle 默认限制每分钟尝试60次,并且在一分钟内访问次数达到60次后禁止访问:
Route::group(['prefix'=>'api','middleware'=>'throttle'],function(){ Route::get('users',function(){ return \App\User::all(); });});
如果你访问 api/users 路由,就会看到响应头如下所示:
该响应意味着:
- 请求成功(状态码为200)
- 每分钟只能访问60次
- 在本时间段内还能访问57次
如果访问次数超过60次,响应头如下:
同时,响应内容文本为:Too Many Attempts。
如果44s后重试,页面恢复正常访问。
3、自定义throttle中间件
让我们来做一点自定义,现在我们想要限制每分钟访问5次:
Route::group(['prefix'=>'api','middleware'=>'throttle:5'],function(){ Route::get('users',function(){ return \App\User::all(); });});
如果我们想要改变达到指定限制次数后的等待时间,可以这样自定义:
Route::group(['prefix'=>'api','middleware'=>'throttle:5,10'],function(){ Route::get('users',function(){ return \App\User::all(); });});
内容总结
以上是互联网集市为您收集整理的Laravel5.2新特性系列--访问频率限制中间件throttle的使用全部内容,希望文章能够帮你解决Laravel5.2新特性系列--访问频率限制中间件throttle的使用所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。