Der Inhalt dieses Artikels befasst sich mit der Geschwindigkeitsbegrenzung der Yii2.0 RESTful API? Was ist der Nutzen? Es hat einen gewissen Referenzwert. Freunde in Not können sich darauf beziehen. Ich hoffe, es wird Ihnen hilfreich sein.
Was ist Ratenbegrenzung?
Der maßgebliche Leitfaden wird mit Drosselung übersetzt. Um Missbrauch zu verhindern, sollten Sie eine Drosselung Ihrer API in Betracht ziehen. Sie können beispielsweise jeden Benutzer auf 100 Aufrufe der API innerhalb von 10 Minuten beschränken. Wenn innerhalb einer bestimmten Zeit eine große Anzahl von Anfragen von einem Benutzer eingehen, wird der Antwortstatuscode 429 zurückgegeben (was bedeutet, dass zu viele Anfragen vorliegen).
Um die Ratenbegrenzung zu aktivieren, müssen Sie zunächst die Authentifizierungsklasse implementieren, die ich im Tutorial zur Yii2.0-RESTful-API-Authentifizierung erläutert habe noch einmal darauf basierend
Wenn wir uns die maßgebliche Anleitung ansehen, können wir sehen, dass die Authentifizierungsklasse zunächst yiifiltersRateLimitInterface erben muss, um die Ratenbegrenzung zu aktivieren
Generieren Sie zwei Schlüsselfelder
php yii migrate/create add_allowance_and_allowance_updated_at_to_user
Ändern Sie gerade die Migrationsdatei
/** * {@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'); }
Führen Sie die Migration aus
php yii migrate
Schreiben Sie eine Authentifizierungsklasse und erben Sie 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 { . . . }
implementieren Sie die Erforderliche Methoden für 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(); }
Rufen Sie
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 im Controller auf und fordern Sie Ihre Aktion an. Wenn 429 in mehreren Anfragen angezeigt wird, bedeutet dies, dass die Ratenbegrenzung erfolgreich aktiviert wurde
Oben geht es um die Yii2.0-Ratenbegrenzung. Zur Verwendung muss die Ratenbegrenzung in Verbindung mit der Authentifizierung verwendet werden. Schauen Sie sich zur Authentifizierung das Tutorial zur Yii2.0-RESTful-API-Authentifizierung an Zuerst die Authentifizierungsfunktion und dann die Ratenbegrenzung aktivieren.
Ich denke, das ist das Ende der Yii2.0 RESTFul API. Der Rest ist die eigentliche Übung ,
Das obige ist der detaillierte Inhalt vonWas sind die Geschwindigkeitsbegrenzungen der Yii2.0 RESTful API? Was ist der Nutzen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!