摘要:之速率限制什么是速率限制权威指南翻译过来为限流,为防止滥用,你应该考虑对您的限流。如果在规定的时间内接收了一个用户大量的请求,将返回响应状态代码这意味着过多的请求。
Yii2.0 RESTful API 之速率限制 什么是速率限制?
权威指南翻译过来为限流,为防止滥用,你应该考虑对您的 API 限流。 例如,您可以限制每个用户 10 分钟内最多调用 API 100 次。 如果在规定的时间内接收了一个用户大量的请求,将返回响应状态代码 429 (这意味着过多的请求)。
要启用速率限制,首先需要实现认证类,而关于认证的章节我在 Yii2.0 RESTful API 认证教程 进行了详细的阐述,本篇就不过多介绍,再次基础上进行操作启用速率限制
翻阅权威指南,我们可以看到要启用速率限制首先 认证类 需要继承 yiifiltersRateLimitInterface
生成两个关键字段
php yii migrate/create add_allowance_and_allowance_updated_at_to_user
修改 刚才的迁移文件
/** * {@inheritdoc} */ public function safeUp() { $this->addColumn("user", "allowance", $this->integer()); $this->addColumn("user", "allowance_updated_at", $this->integer()); } /** * {@inheritdoc} */ public function safeDown() { $this->dropColumn("user", "allowance"); $this->dropColumn("user", "allowance_updated_at"); }
执行迁移
php yii migrate
编写认证类,并继承 RateLimitInterface
namespace apimodels; use Yii; use yiiaseNotSupportedException; use yiiehaviorsTimestampBehavior; use yiidbActiveRecord; use yiifiltersRateLimitInterface; use yiiwebIdentityInterface; class User extends ActiveRecord implements IdentityInterface,RateLimitInterface { . . . }
实现 RateLimitInterface 所需要的方法
public function getRateLimit($request, $action) { return [1, 1]; // $rateLimit requests per second } public function loadAllowance($request, $action) { return [$this->allowance, $this->allowance_updated_at]; } public function saveAllowance($request, $action, $allowance, $timestamp) { $this->allowance = $allowance; $this->allowance_updated_at = $timestamp; $this->save(); }
控制器中实现调用
use yiifiltersauthCompositeAuth; use yiifiltersauthHttpBearerAuth; use yiifiltersauthQueryParamAuth; use yiifiltersRateLimiter; public function behaviors() { $behaviors = parent::behaviors(); $behaviors["rateLimiter"] = [ "class" => RateLimiter::className(), "enableRateLimitHeaders" => true, ]; $behaviors["authenticator"] = [ "class" => CompositeAuth::className(), "authMethods" => [ //Http::className(), HttpBearerAuth::className(), QueryParamAuth::className(), ], ]; //$behaviors["rateLimiter"]["enableRateLimitHeaders"] = true; return $behaviors; }
ok,请求下你的 action,多次请求如果出现 429,那么表示速率限制启用成功
以上就是关于 Yii2.0 速率限制的使用,速率限制需要和认证配合着使用,关于认证的,查阅Yii2.0 RESTful API 认证教程 ,这篇文章,推荐您,先看完认证,先做完认证的功能,然后在启用速率限制
关于 Yii2.0 RESTFul API到此我觉得就结束了,核心功能就是这些,剩下的就是具体的实战了,多练、多敲,
一共四篇文章,分别为:
Yii2.0 RESTful API 基础配置教程
Yii2.0 RESTful API 认证教程
Yii2.0 RESTful API 之版本控制
Yii2.0 RESTful API 之速率限制
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/29916.html
摘要:之版本控制之前我写过两篇关于如何搭建,以及认证等处理,但是没有涉及到版本管理,今天就来谈谈版本管理如何实现。如果你还没有安装,你可以按照这里的说明进行安装。 Yii2.0 RESTful API 之版本控制 之前我写过两篇关于 Yii2.0 RESTful API 如何搭建,以及 认证 等处理,但是没有涉及到版本管理,今天就来谈谈版本管理如何实现。 索性就从头开始一步一步搭建吧,但是关...
摘要:最近在做功能,找了好久的资料,才找到这类的教程,感谢该作者,以下内容根据我的项目实际情况做了一定的修改。 最近在做Yii2.0 RESTful API功能,找了好久的资料,才找到这类的教程,感谢该作者,以下内容根据我的项目实际情况做了一定的修改。 安装yii2.0 安装 Composer 后,您可以通过在 Web 可访问的文件夹下运行以下命令来 安装Yii应用程序模板: compose...
这篇说下yii2.0开发 API 吧,使用 RESTful API模式 安装Yii2.0 通过 Composer 安装 这是安装Yii2.0的首选方法。如果你还没有安装 Composer,你可以按照这里的说明进行安装。 安装完 Composer,运行下面的命令来安装 Composer Asset 插件: php composer.phar global require fxp/composer-a...
摘要:请求参数当作请求参数发送,例如,由于大多数服务器都会保存请求参数到日志,这种方式应主要用于请求,因为它不能使用头来发送使用者从认证服务器上获取基于协议的,然后通过发送到服务器。 认证介绍 和Web应用不同,RESTful APIs 通常是无状态的, 也就意味着不应使用 sessions 或 cookies, 因此每个请求应附带某种授权凭证,因为用户授权状态可能没通过 sessions ...
摘要:最近在做认证功能,记录整个过程,方便以后查看。请求参数当作请求参数发送,例如,由于大多数服务器都会保存请求参数到日志,这种方式应主要用于请求,因为它不能使用头来发送使用者从认证服务器上获取基于协议的,然后通过发送到服务器。 最近在做RESTful API认证功能,记录整个过程,方便以后查看。本文参照了 https://segmentfault.com/a/119000001636860...
阅读 4362·2021-11-19 09:59
阅读 3281·2021-10-12 10:12
阅读 2577·2021-09-22 15:25
阅读 3306·2019-08-30 15:55
阅读 1170·2019-08-29 11:27
阅读 1446·2019-08-28 18:06
阅读 2718·2019-08-26 13:41
阅读 2527·2019-08-26 13:41