Laravel 5.4 — Override API ‘throttle: 60,1’

Я пишу много API для получения и хранения данных.
Мне нравится по умолчанию throttle опция:

protected $middlewareGroups = [
'api' => [
'throttle:60,1',
'bindings',
],
];

ограничить запрос до 60 в минуту; но по какому-то маршруту POST), Я хотел бы увеличить это значение.

Я пытался установить 'throttle:500,1' на промежуточном программном обеспечении маршрута как ниже:

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']);
});

Но это не работает.

Любая идея?

Спасибо.

ОБНОВИТЬ:
Я заметил, что 'throttle:500,1' используется в api.php маршрут будет установлен ПОСЛЕ значения по умолчанию 'throttle:60,1' указано в Kernel.php файл; тогда, это не работает.

Регистрируя выполнение процесса, первый вызов:

Illuminate\Routing\Middleware\ThrottleRequests -> handle

от Kernel.php имеет maxAttempts=60,

Затем второй вызов:

Illuminate\Routing\Middleware\ThrottleRequests -> handle

от api.php имеет maxAttempts=500,

Другими словами, throttle:500,1 в api.php файл не переопределяет throttle:60,1 в Kernel.php файл.

14

Решение

Текущий ответ

В соответствии с этот вопрос GitHub, дроссельная заслонка не следует быть использованы «дважды» (как вы хотите сделать это). Есть только два способа, как правильно решить вашу текущую проблему:

  1. Написать собственный промежуточное программное обеспечение дросселирования

или же

  1. Определить промежуточное программное обеспечение дроссельной заслонки по отдельности для каждого маршрута (группы)

Старый ответ

Вы неправильно установили ключ промежуточного программного обеспечения! При объявлении использования нескольких промежуточных программ создайте для них новый массив

['middleware' => ['WriteToDatabaseMiddleware','throttle:500,1']]

РЕДАКТИРОВАТЬ: Из-за порядка промежуточного программного обеспечения вы должны установить дроссель ядра в самое высокое значение вы хотите использовать, и все другие маршруты, которые должны иметь нижнее значение дроссельной заслонки к соответствующим.

13

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]