首页 > 编程 > PHP > 正文

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

2020-03-22 20:19:21
字体:
来源:转载
供稿:网友
本篇文章给大家带来的内容是关于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}html' target='_blank'>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 yiiiltersRateLimitInterface;use yiiwebIdentityInterface;class User extends ActiveRecord implements IdentityInterface,RateLimitInterface}

实现 RateLimitInterface 所需要的方法

public function getRateLimit($request, $action) return [1, 1]; // $rateLimit requests per secondpublic 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 yiiiltersuthCompositeAuth;use yiiiltersuthHttpBearerAuth;use yiiiltersuthQueryParamAuth;use yiiiltersRateLimiter;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的速度限制是什么?有什么用?的详细内容,PHP教程

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表