Bundle to controls how frequently certain APIs are allowed to be called for ApiPlatform.
Install ApiPlatformRateLimiterBundle library using Composer:
composer require bigchicchicken/api-platform-rate-limiter-group-bundleAdd/Check activation in the file config/bundles.php:
// config/bundles.php
return [
// ...
ApiPlatformRateLimiterBundle\ApiPlatformRateLimiterBundle::class => ['all' => true],
];Configure the rate limiter of Symfony :
# config/packages/rate_limiter.yaml
framework:
rate_limiter:
fixed_window_5_requests_every_10_minutes:
policy: 'fixed_window'
limit: 5
interval: '10 minutes'
And pass the rate limiter to your API's operation :
<?php
// src/Entity/MyClass.php
namespace App\Entity;
use ApiPlatform\Metadata\ApiResource;
use ApiPlatform\Metadata\GetCollection;
#[ApiResource]
#[GetCollection(extraProperties: [ 'rate_limiter' => 'fixed_window_5_requests_every_10_minutes' ])]
class MyClass
{
// ...
}This is completely free and released under the MIT License.