成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Yii2.0 RESTful API 之速率限制

LeviDing / 2423人閱讀

摘要:之速率限制什么是速率限制權(quán)威指南翻譯過來為限流,為防止濫用,你應(yīng)該考慮對您的限流。如果在規(guī)定的時(shí)間內(nèi)接收了一個(gè)用戶大量的請求,將返回響應(yīng)狀態(tài)代碼這意味著過多的請求。

Yii2.0 RESTful API 之速率限制 什么是速率限制?

權(quán)威指南翻譯過來為限流,為防止濫用,你應(yīng)該考慮對您的 API 限流。 例如,您可以限制每個(gè)用戶 10 分鐘內(nèi)最多調(diào)用 API 100 次。 如果在規(guī)定的時(shí)間內(nèi)接收了一個(gè)用戶大量的請求,將返回響應(yīng)狀態(tài)代碼 429 (這意味著過多的請求)。

要啟用速率限制,首先需要實(shí)現(xiàn)認(rèn)證類,而關(guān)于認(rèn)證的章節(jié)我在 Yii2.0 RESTful API 認(rèn)證教程 進(jìn)行了詳細(xì)的闡述,本篇就不過多介紹,再次基礎(chǔ)上進(jìn)行操作
啟用速率限制

翻閱權(quán)威指南,我們可以看到要啟用速率限制首先 認(rèn)證類 需要繼承 yiifiltersRateLimitInterface

生成兩個(gè)關(guān)鍵字段

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");
}

執(zhí)行遷移

php yii migrate

編寫認(rèn)證類,并繼承 RateLimitInterface

namespace apimodels;

use Yii;
use yiiaseNotSupportedException;
use yiiehaviorsTimestampBehavior;
use yiidbActiveRecord;
use yiifiltersRateLimitInterface;
use yiiwebIdentityInterface;

class User extends ActiveRecord implements IdentityInterface,RateLimitInterface
{
    .
    .
    .
}

實(shí)現(xiàn) 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();
}

控制器中實(shí)現(xiàn)調(diào)用

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,多次請求如果出現(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到此我覺得就結(jié)束了,核心功能就是這些,剩下的就是具體的實(shí)戰(zhàn)了,多練、多敲,

一共四篇文章,分別為:

Yii2.0 RESTful API 基礎(chǔ)配置教程

Yii2.0 RESTful API 認(rèn)證教程

Yii2.0 RESTful API 之版本控制

Yii2.0 RESTful API 之速率限制

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/29916.html

相關(guān)文章

  • Yii2.0 RESTful API 版本控制

    摘要:之版本控制之前我寫過兩篇關(guān)于如何搭建,以及認(rèn)證等處理,但是沒有涉及到版本管理,今天就來談?wù)劙姹竟芾砣绾螌?shí)現(xiàn)。如果你還沒有安裝,你可以按照這里的說明進(jìn)行安裝。 Yii2.0 RESTful API 之版本控制 之前我寫過兩篇關(guān)于 Yii2.0 RESTful API 如何搭建,以及 認(rèn)證 等處理,但是沒有涉及到版本管理,今天就來談?wù)劙姹竟芾砣绾螌?shí)現(xiàn)。 索性就從頭開始一步一步搭建吧,但是關(guān)...

    _ang 評論0 收藏0
  • Yii2.0 RESTful API 基礎(chǔ)配置教程[轉(zhuǎn)載]

    摘要:最近在做功能,找了好久的資料,才找到這類的教程,感謝該作者,以下內(nèi)容根據(jù)我的項(xiàng)目實(shí)際情況做了一定的修改。 最近在做Yii2.0 RESTful API功能,找了好久的資料,才找到這類的教程,感謝該作者,以下內(nèi)容根據(jù)我的項(xiàng)目實(shí)際情況做了一定的修改。 安裝yii2.0 安裝 Composer 后,您可以通過在 Web 可訪問的文件夾下運(yùn)行以下命令來 安裝Yii應(yīng)用程序模板: compose...

    xorpay 評論0 收藏0
  • Yii2.0 RESTful API 基礎(chǔ)配置教程

    這篇說下yii2.0開發(fā) API 吧,使用 RESTful API模式 安裝Yii2.0 通過 Composer 安裝 這是安裝Yii2.0的首選方法。如果你還沒有安裝 Composer,你可以按照這里的說明進(jìn)行安裝。 安裝完 Composer,運(yùn)行下面的命令來安裝 Composer Asset 插件: php composer.phar global require fxp/composer-a...

    fyber 評論0 收藏0
  • Yii2.0 RESTful API 認(rèn)證教程

    摘要:請求參數(shù)當(dāng)作請求參數(shù)發(fā)送,例如,由于大多數(shù)服務(wù)器都會保存請求參數(shù)到日志,這種方式應(yīng)主要用于請求,因?yàn)樗荒苁褂妙^來發(fā)送使用者從認(rèn)證服務(wù)器上獲取基于協(xié)議的,然后通過發(fā)送到服務(wù)器。 認(rèn)證介紹 和Web應(yīng)用不同,RESTful APIs 通常是無狀態(tài)的, 也就意味著不應(yīng)使用 sessions 或 cookies, 因此每個(gè)請求應(yīng)附帶某種授權(quán)憑證,因?yàn)橛脩羰跈?quán)狀態(tài)可能沒通過 sessions ...

    JohnLui 評論0 收藏0
  • Yii2.0 RESTful API 認(rèn)證教程【令牌驗(yàn)證】

    摘要:最近在做認(rèn)證功能,記錄整個(gè)過程,方便以后查看。請求參數(shù)當(dāng)作請求參數(shù)發(fā)送,例如,由于大多數(shù)服務(wù)器都會保存請求參數(shù)到日志,這種方式應(yīng)主要用于請求,因?yàn)樗荒苁褂妙^來發(fā)送使用者從認(rèn)證服務(wù)器上獲取基于協(xié)議的,然后通過發(fā)送到服務(wù)器。 最近在做RESTful API認(rèn)證功能,記錄整個(gè)過程,方便以后查看。本文參照了 https://segmentfault.com/a/119000001636860...

    X1nFLY 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<