php - Laravel 5.2 中的 API 限制

标签 php laravel

我看到了 this tutorial关于 Laravel 5.2 中的限制

似乎 throttle 只用于 API,但为什么不能用于其他 Controller 的东西,以避免人们通过 Postman 发送 100 次相同的表单。

我之所以这样说,是因为现在在 Kernel.php 中,中间件在 web 和 api 之间明确划分: Kernel.php:Laravel 5.2

最佳答案

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

5.2 带来了一种对中间件进行分组的方法,就像之前使用路由组一样。在 5.1 中你会做这样的事情:

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

这仍然是完全有效的,但是如果你想添加另一个具有相同中间件的路由组,你必须兼顾组织,使它们嵌套在应用这些中间件的单个路由组之下,或者你必须复制粘贴中间件,都不是很理想。对于 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中加入

关于php - Laravel 5.2 中的 API 限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34660731/

相关文章:

php - 从一个数据库读取数据并使用 PHP 插入另一个数据库时出现编码错误

php - 发送电子邮件至 MYSQL 上的地址

php - 从 mysql 填充第二个下拉菜单

SQL 数据库架构 - 多对多或数据透视表

Laravel Mix URL 处理扭曲文件路径

php - PHP 在不相关的代码上浪费了多少资源(如果有的话)?

php - UTF-8贯穿始终

php - 在哪里以及如何在 Laravel 5 中创建存储过程

javascript - 将类应用于动态添加的行

php - 使用 composer 将 github 包安装到 Laravel 项目中