Метод isAccepted
Метод isAccepted класса RateLimit проверяет,
был ли текущий запрос принят в рамках установленного
ограничения частоты. Он возвращает true, если
лимит не превышен, и false, если запрос отклонён.
Этот метод не принимает параметров и работает с объектом,
который возвращается после вызова consume у
RateLimiter.
Синтаксис
public function isAccepted(): bool
Пример
Давайте создадим ограничитель и проверим, принят ли запрос:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\RateLimiter\RateLimiterFactory;
class RateLimitController extends AbstractController
{
public function index(RateLimiterFactory $anonymousApiLimiter): Response
{
$limiter = $anonymousApiLimiter->create('user');
$limit = $limiter->consume(1);
if ($limit->isAccepted()) {
return new Response('accepted');
}
return new Response('rejected');
}
}
?>
Результат выполнения кода при первой попытке:
accepted
Пример
Давайте проверим лимит после его исчерпания:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\RateLimiter\RateLimiterFactory;
class RateLimitController extends AbstractController
{
public function index(RateLimiterFactory $anonymousApiLimiter): Response
{
$limiter = $anonymousApiLimiter->create('user');
$limit = $limiter->consume(5);
$res = $limit->isAccepted();
return new Response(var_export($res, true));
}
}
?>
Результат выполнения кода при превышении лимита:
false
Смотрите также
-
класс
RateLimit,
который представляет результат проверки лимита -
метод
getRemainingTokens,
который возвращает количество оставшихся токенов -
метод
getRetryAfter,
который возвращает время до следующей попытки -
метод
consume,
который расходует токены и возвращает объект RateLimit