摘要:之速率限制什么是速率限制權威指南翻譯過來為限流,為防止濫用,你應該考慮對您的限流。如果在規定的時間內接收了一個用戶大量的請求,將返回響應狀態代碼這意味著過多的請求。
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 之速率限制
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/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...
閱讀 4418·2021-11-19 09:59
閱讀 3335·2021-10-12 10:12
閱讀 2646·2021-09-22 15:25
閱讀 3349·2019-08-30 15:55
閱讀 1194·2019-08-29 11:27
閱讀 1473·2019-08-28 18:06
閱讀 2747·2019-08-26 13:41
閱讀 2564·2019-08-26 13:41