本站资源收集于互联网,不提供软件存储服务,每天免费更新优质的软件以及学习资源!

Yii2.0RESTfulAPI的速度限制是什么?有什么用?

网络教程 app 1℃

Yii2.0RESTfulAPI的速度限制是什么有什么用

本篇文章给大家带来的内容是关于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 yiiiltersRateLimitInterface;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 yiiiltersuthCompositeAuth;use yiiiltersuthHttpBearerAuth;use yiiiltersuthQueryParamAuth;use yiiiltersRateLimiter;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.0RESTfulAPI的速度限制是什么?有什么用?

喜欢 (0)