什么是速率限制?
權威指南翻譯過來為限流,為防止濫用,你應該考慮對您的 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 yiiiltersRateLimitInterface;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 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的速度限制是什么?有什么用?的詳細內容,PHP教程
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
新聞熱點
疑難解答