I'm writing a lot of API to get and store data.
I like the default throttle
option:
protected $middlewareGroups = [
'api' => [
'throttle:60,1',
'bindings',
],
];
to limit the request to 60 per minute; but for some route (es: POST
), I'd like to increase this value.
I tried to set 'throttle:500,1'
on route Middleware like below:
Route::group(function () {
Route::get('semaphore/1', ['uses' => 'App\Api\V1\DBs\SemaphoreController@index']);
Route::post('semaphore/1', ['uses' => 'App\Api\V1\DBs\SemaphoreController@store', 'middleware' => 'WriteToDatabaseMiddleware', 'throttle:500,1']);
});
but it does not work.
Any idea?
Thank you.
UPDATE:
I noticed that the 'throttle:500,1'
used in the api.php
route will be set AFTER the default 'throttle:60,1'
specified into Kernel.php
file; then, It doesn't work.
Logging the process execution, the first call is:
Illuminate\Routing\Middleware\ThrottleRequests -> handle
from Kernel.php
has maxAttempts=60
.
Then, the second call is:
Illuminate\Routing\Middleware\ThrottleRequests -> handle
from api.php
has maxAttempts=500
.
In others words, the throttle:500,1
in the api.php
file do not override the throttle:60,1
in the Kernel.php
file.