Yii2.0 RESTful APIのレート制限
Yii2.0 RESTful APIのレート制限
速度制限とは?
権威あるガイドは、ストリームを制限するために翻訳されています.乱用を防ぐために、APIのストリームを制限することを考慮する必要があります.たとえば、ユーザー1人あたり10分以内にAPIを最大100回呼び出すように制限できます.所定の時間内に1人のユーザから大量の要求が受信されると、応答状態コード429が返される(これは、過剰な要求を意味する).
レート制限を有効にするには、まず認証クラスを実装する必要がありますが、認証に関する章はYii 2にあります.0 RESTful API認証チュートリアルについて詳しく説明したが、本編では多くの紹介にすぎず、再び操作を行う
速度制限の有効化
権威あるガイドラインを参照すると、レート制限を有効にするには、まず認証クラスがyifiltersRateLimitInterfaceを継承する必要があることがわかります.
2つのキーフィールドを生成
先ほどの移行ファイルの変更
移行の実行
認証クラスを作成し、
コントローラでの呼び出しの実装
OK、actionをリクエストして、429が現れたら、レート制限の有効化に成功したことを示します.
以上、Yii 2についてです.0レート制限の使用、レート制限は認証と組み合わせて使用する必要があり、認証についてはYii 2を参照する.0 RESTful API認証チュートリアル、この記事では、認証を読み終わってから、認証の機能を完成してから、レート制限を有効にすることをお勧めします.
Yii 2について.0 RESTFul APIはここで終わりだと思います.コア機能はこれです.残りは具体的な実戦です.練習して、叩いて、
全部で4つの文章があります.
Yii2.0 RESTful API基礎構成チュートリアル
Yii2.0 RESTful API認証チュートリアル
Yii2.0 RESTful APIのバージョン管理
Yii2.0 RESTful APIのレート制限
速度制限とは?
権威あるガイドは、ストリームを制限するために翻訳されています.乱用を防ぐために、APIのストリームを制限することを考慮する必要があります.たとえば、ユーザー1人あたり10分以内にAPIを最大100回呼び出すように制限できます.所定の時間内に1人のユーザから大量の要求が受信されると、応答状態コード429が返される(これは、過剰な要求を意味する).
レート制限を有効にするには、まず認証クラスを実装する必要がありますが、認証に関する章はYii 2にあります.0 RESTful API認証チュートリアルについて詳しく説明したが、本編では多くの紹介にすぎず、再び操作を行う
速度制限の有効化
権威あるガイドラインを参照すると、レート制限を有効にするには、まず認証クラスがyifiltersRateLimitInterfaceを継承する必要があることがわかります.
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、actionをリクエストして、429が現れたら、レート制限の有効化に成功したことを示します.
以上、Yii 2についてです.0レート制限の使用、レート制限は認証と組み合わせて使用する必要があり、認証についてはYii 2を参照する.0 RESTful API認証チュートリアル、この記事では、認証を読み終わってから、認証の機能を完成してから、レート制限を有効にすることをお勧めします.
Yii 2について.0 RESTFul APIはここで終わりだと思います.コア機能はこれです.残りは具体的な実戦です.練習して、叩いて、
全部で4つの文章があります.
Yii2.0 RESTful API基礎構成チュートリアル
Yii2.0 RESTful API認証チュートリアル
Yii2.0 RESTful APIのバージョン管理
Yii2.0 RESTful APIのレート制限