簡體   English   中英

Laravel 5.2中的API節流

[英]API Throttle in Laravel 5.2

我在Laravel 5.2中看到了關於油門的這個教程

看起來油門只用於API,但為什么不能用於其他控制器的東西,以避免人們通過Postman發送相同形式的100倍。

我告訴你,因為在Kernel.php中,現在,中間件在web和apis之間明顯划分: Kernel.php:Laravel 5.2

您也可以將其應用於網頁。 從您的評論來看,您對中間件(主要是中間件組)的新功能感到困惑。

5.2帶來了一種分組中間件的方法,就像之前使用Route組一樣。 在5.1中你會做類似的事情:

Route::group(['prefix' => 'api', 'middleware'=>'auth,custom_middleware,permission:edit_permissions'], function() {
    Route::post('permissions/{id}/store', ['uses'=>'PermissionController@store']);
});

這仍然是完全有效的,但如果你想添加另一個具有相同中間件的Route組,你必須要么組織它們,以便它們嵌套在應用這些中間件的單個Route組下面,或者你必須復制粘貼中間件,既不是可取的。 使用5.2,您只需要:

Kernel.php

protected $middlewareGroups = [
    'permissions_api' => [
         'auth', 
         'custom_middleware',
         'permission:edit_permissions',
     ]
];

routes.php

Route::group(['middleware' => ['permissions_api']], function () {
    Route::post('permissions/{id}/store', ['uses'=>'PermissionController@store']);
});

Route::group(['middleware' => ['permissions_api']], function () {
    Route::post('permissions/{id}/update', ['uses'=>'PermissionController@update']);
});

因此,您可以將這些中間件分組並將其應用於這些組中。 這就是你所看到的apiweb 這只是Laravel提供的默認中間件組,您可以根據需要進行修改。 throttle可用作中間件,您可能需要它。 以下都是完全有效的

Route::group(['middleware' => ['throttle:60,1']], function () {
    Route::post('permissions/{id}/update', ['uses'=>'PermissionController@update']);
});

要么

protected $middlewareGroups = [
    'permissions_api' => [
         'auth', 
         'custom_middleware',
         'permission:edit_permissions',
         'throttle:60,1'
     ] 
];

因此, throttle只是一個中間件,可以像任何中間件一樣應用。 它在Kernel.php中定義為'throttle' => \\Illuminate\\Routing\\Middleware\\ThrottleRequests::class,60,1只是中間件參數,在5.1中添加

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM