Laravel 5 仅从请求中获取 GET 或 POST 参数

Laravel 5 get only GET or POST params from request

我可以使用 Request::input()Request::all() 访问请求参数。

问题是我的请求包括 GET 和 POST 参数,但只有 GET 参数用于计算签名。

有没有办法从 Laravel 5.1 中的请求中仅检索一组 GET 或一组 POST 参数?

或者使用 $_GET 和 $_POST 是我唯一的选择?

谢谢。

您可以使用 Request::query() 只获取 GET 参数。请记住,对于从 GET 获得的参数顺序的一致性没有任何保证,因此您可能需要在计算签名之前对数组进行排序 - 取决于您计算签名的方式。

按照这些说明使用您自己的 Laravel 请求 class 进行扩展:

然后,在您自己的请求 class 中,从 Illuminate\Http\Request 复制 input() 方法并删除 + $this->query->all():

public function input($key = null, $default = null)
{
    $input = $this->getInputSource()->all();

    return data_get($input, $key, $default);
}

宾果!现在在一个 POST 请求中, Request::query() returns 查询 (URL) 参数,而 Request::input() 只有 returns 来自表单/multipart / 的参数JSON / 任何输入源。

如果你需要一些简单的东西,你可以使用全局助手:

$pathData = request()->path(); <br />
$queryData = request()->query(); <br />
$postData = array_diff(request()->all(), request()->query());

https://laravel.com/docs/5.6/requests