この記事の内容は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 サイトの他の関連記事を参照してください。