Laravel验证-禁止请求参数的规则

its*_*oco 4 php laravel laravel-5 laravel-5.8

在我的Laravel 5.8应用程序中,我有许多API路由返回分页结果。如果我向我的API请求附加了以下查询字符串,则可以禁用分页。

http://api.test/users/?no_paginate=1
Run Code Online (Sandbox Code Playgroud)

我的问题是...如何禁止在某些路线上使用no_paginate?我希望在请求类中进行一些验证,但是我在文档中找不到任何内容。

Sap*_*aik 6

您可以使用Global Middleware来做到这一点。

首先安排中间件在所有路径上运行:

// routes.php
$app->middleware([
    App\Http\Middleware\DisableNoPaginate::class
]);
Run Code Online (Sandbox Code Playgroud)

然后定义中间件应该做什么:

// src/App/Http/Middleware/DisableNoPaginate.php
<?php
namespace App\Http\Middleware;

use Closure;

class DisableNoPaginate
{
    public function handle($request, Closure $next)
    {
        //remove no_paginate param from request object
        unset($request['no_paginate']);

        return $next($request);
    }
}
Run Code Online (Sandbox Code Playgroud)