Commit 52c809ee by Alexander Makarov

Merge pull request #5148 from githubjeka/patch-1

[ci skip] Updated RUS TRANSLATION rest-rate-limiting.md
parents bdc1d2e2 d2c32a27
......@@ -8,21 +8,19 @@
Чтобы включить ограничение частоты запросов, *[[yii\web\User::identityClass|класс user identity]]* должен реализовывать интерфейс [[yii\filters\RateLimitInterface]].
Этот интерфейс требует реализации следующих трех методов:
* `getRateLimit()`: возвращает максимальное количество разрешенных запросов и период времени, т.е. `[100, 600]`, что означает
не более 100 вызовов API в течение 600 секунд.
* `getRateLimit()`: возвращает максимальное количество разрешенных запросов и период времени, например `[100, 600]`, что означает не более 100 вызовов API в течение 600 секунд.
* `loadAllowance()`: возвращает оставшееся количество разрешенных запросов и соответствующий *UNIX-timestamp*,
когда ограничение проверялось в последний раз.
* `saveAllowance()`: сохраняет оставшееся количество разрешенных запросов и текущий *UNIX-timestamp*.
В методах `loadAllowance()` и `saveAllowance()` необходимо реализовать загрузку и сохранение данных по API запросам. Для этого, например, можно использовать два столбца в таблице пользователей - количество оставшихся разрешённых запросов и отметку времени, когда произодился последний запрос. Такая реализация позволит ограничить частоту запросов от аутентифицированного пользователя. Также можно перенести хранение этих данных в NoSQL-хранилище или кэш, для улучшения производительности.
Вы можете также использовать два столбца в таблице пользователей для записи количества разрешенных запросов и *отметки времени*.
`loadAllowance()` и `saveAllowance()` могут быть реализованы как чтение и сохранение значений, относящихся к текущему аутентифицированному пользователю,
в этих двух столбцах. Для улучшения производительности вы можете подумать о том, чтобы хранить эту информацию
в кэше или каком-либо NoSQL-хранилище.
Так как *identity class* реализует требуемый интерфейс, Yii будет автоматически использовать [[yii\filters\RateLimiter]],
настроенный как фильтр действий в [[yii\rest\Controller]], для выполнения проверки на количество разрешенных запросов. Если ограничение на количество
запросов будет превышено, выбрасывается исключение [[yii\web\TooManyRequestsHttpException]]. Вы можете настроить ограничитель частоты запросов
в ваших классах REST-контроллеров следующим образом:
Если *[[yii\web\User::identityClass|класс user identity]]* реализует требуемый интерфейс, то Yii будет автоматически использовать [[yii\filters\RateLimiter]], настроенный как фильтр для действий в [[yii\rest\Controller]], для выполнения проверки на количество разрешенных запросов. Если ограничение на количество запросов будет превышено, выбрасывается исключение [[yii\web\TooManyRequestsHttpException]]. Вы можете настроить ограничитель частоты запросов в ваших классах REST-контроллеров следующим образом:
```php
public function behaviors()
......@@ -33,8 +31,7 @@ public function behaviors()
}
```
Когда ограничение частоты запросов включено, по умолчанию каждый ответ будет возвращаться со следующими HTTP-заголовками, содержащими
информацию о текущих ограничениях количества запросов:
Когда ограничение частоты запросов реализовано, то каждый ответ, по умолчанию, будет возвращаться со следующими HTTP-заголовками, содержащими информацию о текущих ограничениях:
* `X-Rate-Limit-Limit`: максимальное количество запросов, разрешенное в течение периода времени;
* `X-Rate-Limit-Remaining`: оставшееся количество разрешенных запросов в текущем периоде времени;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment