Heim > Backend-Entwicklung > PHP-Tutorial > Was sind die Geschwindigkeitsbegrenzungen der Yii2.0 RESTful API? Was ist der Nutzen?

Was sind die Geschwindigkeitsbegrenzungen der Yii2.0 RESTful API? Was ist der Nutzen?

不言
Freigeben: 2023-04-04 17:42:01
nach vorne
2486 Leute haben es durchsucht

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

Ratenbegrenzung aktivieren

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
Nach dem Login kopieren

Ä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');
}
Nach dem Login kopieren

Führen Sie die Migration aus

php yii migrate
Nach dem Login kopieren

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
{
    .
    .
    .
}
Nach dem Login kopieren

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();
}
Nach dem Login kopieren

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;
}
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:segmentfault.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage