什么是速率限制?
權(quán)威指南翻譯過(guò)來(lái)為限流,為防止濫用,你應(yīng)該考慮對(duì)您的 API 限流。 例如,您可以限制每個(gè)用戶 10 分鐘內(nèi)最多調(diào)用 API 100 次。 如果在規(guī)定的時(shí)間內(nèi)接收了一個(gè)用戶大量的請(qǐng)求,將返回響應(yīng)狀態(tài)代碼 429 (這意味著過(guò)多的請(qǐng)求)。
要啟用速率限制,首先需要實(shí)現(xiàn)認(rèn)證類(lèi),而關(guān)于認(rèn)證的章節(jié)我在 Yii2.0 RESTful API 認(rèn)證教程 進(jìn)行了詳細(xì)的闡述,本篇就不過(guò)多介紹,再次基礎(chǔ)上進(jìn)行操作啟用速率限制翻閱權(quán)威指南,我們可以看到要啟用速率限制首先 認(rèn)證類(lèi) 需要繼承 yiifiltersRateLimitInterface
生成兩個(gè)關(guān)鍵字段
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 }執(zhí)行遷移
php yii migrate
編寫(xiě)認(rèn)證類(lèi),并繼承 RateLimitInterface
namespace apimodels;use Yii;use yiiaseNotSupportedException;use yiiehaviorsTimestampBehavior;use yiidbActiveRecord;use yiiiltersRateLimitInterface;use yiiwebIdentityInterface;class User extends ActiveRecord implements IdentityInterface,RateLimitInterface}
實(shí)現(xiàn) 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();}
控制器中實(shí)現(xiàn)調(diào)用
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,請(qǐng)求下你的 action,多次請(qǐng)求如果出現(xiàn) 429,那么表示速率限制啟用成功
以上就是關(guān)于 Yii2.0 速率限制的使用,速率限制需要和認(rèn)證配合著使用,關(guān)于認(rèn)證的,查閱Yii2.0 RESTful API 認(rèn)證教程 ,這篇文章,推薦您,先看完認(rèn)證,先做完認(rèn)證的功能,然后在啟用速率限制
關(guān)于 Yii2.0 RESTFul API到此我覺(jué)得就結(jié)束了,核心功能就是這些,剩下的就是具體的實(shí)戰(zhàn)了,多練、多敲,
以上就是Yii2.0 RESTful API的速度限制是什么?有什么用?的詳細(xì)內(nèi)容,PHP教程
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。
新聞熱點(diǎn)
疑難解答
圖片精選