当前位置:  开发笔记 > 编程语言 > 正文

Laravel 5.2中的API节流

如何解决《Laravel5.2中的API节流》经验,为你挑选了1个好方法。

我在Laravel 5.2中看到了关于油门的这个教程

看起来油门只用于API,但为什么不能用于其他控制器的东西,以避免人们通过邮差发送100次相同的形式.

我告诉你,因为在Kernel.php中,现在,中间件在web和apis之间明显划分:Kernel.php:Laravel 5.2



1> Josh Janusch..:

您也可以将其应用于网页.从您的评论来看,您对中间件(主要是中间件组)的新功能感到困惑.

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.phpas 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,60,1中间件参数,它们是在5.1中添加的

推荐阅读
mylvfamily
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有