当前位置: 首页 > 后端技术 > PHP

Yii2.0RESTfulAPI速率限制

时间:2023-03-29 21:24:11 PHP

Yii2.0RESTfulAPI速率限制什么是速率限制?权威指南翻译为限速。为防止滥用,您应该考虑限制API速率。例如,您可以限制每个用户在10分钟内最多进行100次API调用。如果在指定时间内收到用户的大量请求,将返回响应状态码429(表示请求过多)。开启限速首先需要实现认证类,我在Yii2.0RESTfulAPI认证教程中关于认证的章节已经详细阐述了,本文不再过多介绍,接下来操作启用速率限制的基础。看了权威指南,我们可以看到要开启限流,认证类首先需要继承yiifiltersRateLimitInterface生成两个关键字段phpyiimigrate/createadd_allowance_and_allowance_updated_at_to_user修改刚才的迁移文件/***{@inheritdoc}*/publicfunctionsafeUp(){$this->addColumn('user','allowance',$this->integer());$this->addColumn('user','allowance_updated_at',$this->integer());}/***{@inheritdoc}*/publicfunctionsafeDown(){$this->dropColumn('user','津贴');$this->dropColumn('user','allowance_updated_at');}执行迁移phpyiimigrate写入认证类,并继承RateLimitInterfacenamespaceapi\models;useYii;useyii\base\NotSupportedException;useyii\behaviors\TimestampBehavior;useyii\db\ActiveRecord;使用yii\filters\RateLimitInterface;使用yii\web\IdentityInterface;类UserextendsActiveRecordimplementsIdentityInterface,RateLimitInterface{...}实现RateLimitInterface公共函数getRate所需的方法限制($request,$action){返回[1,1];//$rateLimit每秒请求数}publicfunctionloadAllowance($request,$action){return[$this->allowance,$this->allowance_updated_at];}publicfunctionsaveAllowance($request,$action,$allowance,$timestamp){$this->allowance=$allowance;$this->allowance_updated_at=$timestamp;$this->save();}控制器中现调使用useyii\filters\auth\CompositeAuth;useyii\filters\auth\HttpBearerAuth;useyii\filters\auth\QueryParamAuth;useyii\filters\RateLimiter;publicfunctionbehaviors(){$behaviors=parent::behaviors();$behaviors['rateLimiter']=['class'=>RateLimiter::className(),'enableRateLimitHeaders'=>true,];$behaviors['authenticator']=['class'=>CompositeAuth::className(),'authMethods'=>[//Http::className(),HttpBearerAuth::className(),QueryParamAuth::className(),],];//$b行为['rateLimiter']['enableRateLimitHeaders']=true;return$behaviors;}ok,请求你的行动。如果多次请求都出现429,则表示开启限速成功。以上是关于Yii2.0ratelimit的使用,Ratelimit需要配合认证使用。鉴权参考Yii2.0RESTfulAPI鉴权教程。本文推荐先阅读鉴权,完成鉴权功能,再开启Yii2限速。0我认为RESTFulAPI到这里就结束了。核心功能就是这些,剩下的就是具体实战了。多练习多打字。一共四篇文章,分别是:Yii2.0RESTfulAPI基础配置教程Yii2.0RESTfulAPI认证教程Yii2.0RESTfulAPI版本控制Yii2.0RESTfulAPI限速