Laravel 5.4 - Remplacer les API 'accélérateur:60,1'
Je suis en train d'écrire beaucoup d'API pour obtenir et stocker des données.
J'aime le défaut throttle
option:
protected $middlewareGroups = [
'api' => [
'throttle:60,1',
'bindings',
],
];
de limiter la demande à 60 par minute; mais, pour certains parcours (es: POST
), j'aimerais augmenter cette valeur.
J'ai tenté de 'throttle:500,1'
sur la route Middleware comme ci-dessous:
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']);
});
mais il ne fonctionne pas.
Une idée?
Merci.
Mise à JOUR:
J'ai remarqué que le 'throttle:500,1'
utilisé dans le api.php
itinéraire sera fixé d'APRÈS la valeur par défaut 'throttle:60,1'
spécifié dans Kernel.php
fichier; ensuite, Il ne fonctionne pas.
L'enregistrement de l'exécution des processus, le premier appel est:
Illuminate\Routing\Middleware\ThrottleRequests -> handle
de Kernel.php
a maxAttempts=60
.
Ensuite, le deuxième appel est:
Illuminate\Routing\Middleware\ThrottleRequests -> handle
de api.php
a maxAttempts=500
.
En d'autres termes, la throttle:500,1
dans le api.php
fichier ne remplacent pas les throttle:60,1
dans le Kernel.php
fichier.
Vous devez vous connecter pour publier un commentaire.
Réponse actuelle
Selon cette question GitHub, la manette des gaz middleware ne devrait pas être utilisé "deux fois" (comme vous voulez le faire). Il y a seulement deux façons de traiter vos problèmes actuels "correctement":
ou
Vieille réponse
Vous définissez le middleware clés de mal! Lors de la déclaration de plusieurs middleware d'utiliser, de créer un nouveau tableau pour eux
EDIT: en Raison de la middleware commande, vous devez configurer votre noyau d'accélérateur à la valeur la plus élevée vous souhaitez utiliser, et toutes les autres voies que devrait avoir un plus faible valeur de limitation à celles qui leur correspondent.
throttle:500,1
(le plus élevé), et toutes les autres routes qui devrait avoir des gaz àthrottle:60,1
. Cela devrait fonctionner avec la commande de requête.500
; la j'ai pas oublier de définir à60
chaque nouvel itinéraire. Je préfère avoir une valeur standard (ex:60
) et le remplacement500
seulement itinéraire spécifique.