ホームページ  >  記事  >  バックエンド開発  >  Yii2.0 RESTful API の速度制限はどれくらいですか?用途は何ですか?

Yii2.0 RESTful API の速度制限はどれくらいですか?用途は何ですか?

不言
不言転載
2019-01-10 11:20:592338ブラウズ

この記事の内容はYii2.0 RESTful APIの速度制限についてです。用途は何ですか?一定の参考値があるので、困っている友人は参考にしていただければ幸いです。

レート制限とは何ですか?

権威ガイドは電流制限として翻訳されています。悪用を防ぐために、API のスロットリングを検討する必要があります。たとえば、各ユーザーが 10 分以内に API を呼び出せる回数を 100 回に制限できます。指定された時間内にユーザーから多数のリクエストを受信した場合、応答ステータス コード 429 が返されます (リクエストが多すぎることを意味します)。

レート制限を有効にするには、まず認証クラスを実装する必要があります。認証の章については、Yii2.0 RESTful API 認証チュートリアルで詳しく説明しました。この記事では紹介しません。ベースで操作します。もう一度説明します

レート制限を有効にする

#権威あるガイドに目を通すと、レート制限を有効にするには、認証クラスが最初に yiifiltersRateLimitInterface

2 つのキーを継承する必要があることがわかります。フィールド

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 api\models;

use Yii;
use yii\base\NotSupportedException;
use yii\behaviors\TimestampBehavior;
use yii\db\ActiveRecord;
use yii\filters\RateLimitInterface;
use yii\web\IdentityInterface;

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 yii\filters\auth\CompositeAuth;
use yii\filters\auth\HttpBearerAuth;
use yii\filters\auth\QueryParamAuth;
use yii\filters\RateLimiter;

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 と呼ばれます。アクションをリクエストします。複数のリクエストに 429 が表示される場合は、レートが制限が正常に有効になりました

上記は Yii2.0 レート制限の使用に関するものです。レート制限は認証と組み合わせて使用​​する必要があります。認証については、Yii2.0 RESTful API 認証チュートリアルを確認してください。この記事最初に認証を読み取り、最初に認証を完了することをお勧めします。関数、次にレート制限を有効にする

#これで Yii2.0 RESTFul API は終わりだと思います。これらがコア関数です。残りは固有の関数です。」実際の戦闘。

もっと練習して、もっと入力してください,


以上がYii2.0 RESTful API の速度制限はどれくらいですか?用途は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はsegmentfault.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。