Laravel 5.2 新特性系列 —— 访问频率限制中间件throttle的使用 | 新特性介绍 | Laravel 新特性系列


本站和网页 https://xueyuanjun.com/post/3566.html 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

Laravel 5.2 新特性系列 —— 访问频率限制中间件throttle的使用 | 新特性介绍 | Laravel 新特性系列
Laravel 学院
文档
Laravel 8.x 中文文档
Laravel 7.x 中文文档
Laravel 6.x 中文文档
Laravel 5.8 中文文档
Laravel 5.7 中文文档
Laravel 5.6 中文文档
Laravel 5.5 中文文档
Laravel 5.4 中文文档
Laravel 5.3 中文文档
Laravel 5.2 中文文档
Laravel 5.1 中文文档
Lumen 中文文档
全栈教程
PHP 全栈工程师指南
PHP 入门到实战
Laravel 入门到精通
Vue.js 入门到实战
玩转 PhpStorm 教程
Laravel 博客入门项目
Laravel 微信小程序项目
Laravel 前后端分离项目
Swoole 入门到实战
Eloquent 性能优化实战
Redis 高性能实战系列
Laravel 新版本特性
PHP 新特性与最佳实践
Golang
Go 入门教程
Go Web 编程
Gin 使用教程
微服务开发
内功修炼
数据结构与算法
网络协议
微服务从入门到实践
高性能 MySQL 实战
高性能 Redis 实战
Laravel 消息队列实战
Laravel 从学徒到工匠
PHP 设计模式系列
名企面试指南
资源库
Laravel 资源大全
Laravel 开源项目
Laravel 扩展包
Laravel 资源下载
更多
博客 & 新闻
问答 & 讨论
Leetcode 题解
学院君读书笔记系列
关于 Laravel 学院
Laravel 互助学习群
Golang 互助学习群
更多
Laravel 中文文档
Laravel 全栈教程
Laravel 学习路径
Go 入门教程
程序员内功修炼
博客
问答
搜索
注册
登录
Info
Content
章节导航
Laravel 新特性系列
目录索引
新特性介绍
30篇文章
Laravel 8 新特性和功能优化速览
适用于单页面应用的轻量级用户认证解决方案 Laravel Airlock 功能速览
Laravel 7 将支持直接在路由定义中自定义隐式路由模型绑定
Laravel 6 之后新版本的发布周期介绍
Laravel 6.0 将新增为指定队列任务设置中间件的功能
Laravel 5.8 新特性系列 —— 编译后的 Blade 模板引入编译前模板文件路径以便调试
Laravel 5.8 新特性系列 —— 支持策略类自动解析功能
Laravel 5.8 新特性系列 —— 废弃全局的字符串和数组相关辅助函数
Laravel 5.8 新特性系列 —— 缓存有效期单位调整
Laravel 5.7 新特性之优化动态调用 Eloquent 模型导致的错误消息
Laravel 5.7 新特性之引入 Laravel Dump Server 扩展包方便本地开发代码调试
Laravel 5.7 新特性系列之新的 URL 生成语法
Laravel 5.7 新特性系列之 resources 目录调整
Laravel 5.4 新特性系列 —— 新增对集合元素的高阶消息传递支持
Laravel 5.3 新特性系列 —— 路由文件及路径修改
Laravel 5.3 新特性系列 —— 更简单地自定义分页模板
Laravel 5.3 新特性系列 —— 新增上传图片尺寸验证规则
Laravel 5.3 新特性系列 —— Blade 模板新增 $loop 变量
Laravel 5.3 新特性系列 —— 深入探讨 Laravel Echo 使用:实时聊天室
Taylor Otwell 在 Laracon US 大会上关于 Laravel 5.3 新特性演讲总结
Laravel 5.3 起将使用 Vue.js 作为默认 JavaScript 前端框架
Laravel 5.3 查询构建器方法 where/update 新增 JSON 属性操作语法
Laravel 5.3 新增全局辅助函数 cache() 用法一览
Laravel 5.3 将会简化 app 目录下的子目录结构
Laravel 5.2 新特性系列 —— 中间件组的定义及使用
Laravel 5.2 新特性系列 —— 访问频率限制中间件throttle的使用
Laravel 5.2 新特性系列 —— 隐式路由模型绑定功能实现
Laravel 5.2 新特性系列 —— 表单数组输入验证功能实现
Laravel 5.2 新特性系列 —— 多用户认证功能实现详解
Laravel 5.1.11 发布 — 支持用户授权功能
图书
Laravel 新特性系列
新特性介绍
Laravel 5.2 新特性系列 —— 访问频率限制中间件throttle的使用
Laravel 5.2 新特性系列 —— 访问频率限制中间件throttle的使用
由 学院君 创建于6年前, 最后更新于 3年前
版本号 #1
45663 views
14 likes
0 collects
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的访问频率限制中间件
在Laravel 5.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();
});
});
Laravel
中间件
5.2
访问频率
API
throttle
点赞
取消点赞
收藏
取消收藏
赞赏
分享到以下平台:
<< 上一篇:
Laravel 5.2 新特性系列 —— 中间件组的定义及使用
>> 下一篇:
Laravel 5.2 新特性系列 —— 隐式路由模型绑定功能实现
16 条评论
#11
张顺
评论于 6年前
正在删除评论...
这个特性 能直接移植到 5.1么? 直接添加'throttle' => IlluminateRoutingMiddlewareThrottleRequests::class, 到$routeMiddleware然后复制这个类文件到 5.1的对应文件夹?
#12
吕文翰_JohnLui
评论于 5年前
正在删除评论...
原创文章?
#13
twisted
评论于 4年前
回复 #46
正在删除评论...
你好,解决这个问题了吗
#14
云窗
评论于 4年前
回复 #15
正在删除评论...
请问这个可以实现么?
#15
woowli
评论于 4年前
正在删除评论...
使用之后,storage/framework/cache中的缓存无法自动删除,导文件缓存越来约大,这个怎么办?
#16
woowli
评论于 4年前
回复 #15
正在删除评论...
放到redis了,这样会自动过期
&lsaquo;
&rsaquo;
登录后即可添加评论
升级为学院君订阅用户(新年优惠🎁)
内容导航
1、访问频率限制概述
2、如何使用Laravel的访问频率限制中间件
3、自定义throttle中间件
相关推荐
Laravel 5.2 新特性系列 —— 中间件组的定义及使用
Laravel 新特性系列
新特性介绍
Lumen 使用 throttle 限制接口访问频率
博客
使用 Dingo API 快速构建 RESTful API(十)—— 路由访问频率限制
Laravel 入门到精通教程
构建 API 接口:Dingo API
某方法不适用web中间件
问答
适用于单页面应用的轻量级用户认证解决方案 Laravel Airlock 功能速览
Laravel 新特性系列
新特性介绍
回到顶部
2022 基于 Laravel 6 构建
关于学院
订阅服务
友情链接
站点地图
本站 CDN 加速服务由又拍云赞助