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

时间:2019-05-23 05:44:12

标签: php laravel laravel-5 laravel-5.8

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

http://api.test/users/?no_paginate=1

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

2 个答案:

答案 0 :(得分:6)

您可以使用Global Middleware进行此操作。

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

{
    Object.keys(peripherals).map(key => peripherals[key]).map(   
        peripheral => (
            <Peripheral
                key={peripheral.id}
                peripheral={peripheral}
                onConnect={onConnect}
                connected={false}
                retrieved = {false}
            />           
        )
    )
}

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

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

答案 1 :(得分:2)

有关通过UsersController中的以下代码获得用户分页或获得所有列表的最佳方法

public function index($type = null, Request $request)
{
    $builder = User::where(/*query*/);

    if($type == "paginate") {
        $items = $builder->paginate(10);
    } else {
        $items = $builder->get();
    }

    return view("users.index", ['users' => $items]);
}

这是web.php / api.php文件中的路由

Route::get('/{type?}', ['as' => 'users.index', 'uses' => 'UsersController@index']);

此处的网址为

http://api.test/users/paginate // get pagination response.
http://api.test/users          // get response without response

我认为这会对您有所帮助。

相关问题