Laravel 5 / 流明请求 Header?
Laravel 5 / Lumen Request Header?
所以我不太确定如何解决这个问题我已经尝试了一些事情,我将在下面列出一个但是我想做的是将 http 请求中发送的信息存储在 PHP变量。
这是 Chrome 邮递员发送我想要发送的请求的视图。注意 "pubapi" 是 "header".
我一直在处理 Lumen 请求,您可以在此处查看记录 (http://lumen.laravel.com/docs/requests),并尝试使用下面的方法来显示它们,但它显然不起作用。
echo Request::all();
我将它放入我的控制器中并且我有...
use Illuminate\Http\Request;
在我的控制器中。
那么我怎么能说存储 header 我正在发送 "pubapi" 到我的控制器中的 php 变量?
编辑
不确定这是否有帮助,但是查看 Laravel 框架文档我看到了这个 http://laravel.com/api/5.0/Illuminate/Http/Request.html#method_header 尝试这样做会在我的代码中引发相同的错误。因此,例如,我尝试了以下操作并遇到了同样的错误。
echo Request::header('pubapi');
正在使用
echo app('request')->header('pubapi');
而不是
echo Request::header('pubapi');
似乎效果很好。有人可以提供额外的解释来解释为什么这有效而我原来的方法没有吗?
尝试将 Illuminate\Http\Request
更改为 Request
。
- use Illuminate\Http\Request;
+ use Request;
您在两个层面上误解了 Laravel 请求 object。
首先,您遇到的错误是因为您引用的是 object 而不是 Facade。 Facades 有一种将静态方法调用转发给 non-static 方法的方法。
其次,您将值作为 header 发送,但正在尝试访问请求参数。这永远不会给你你想要的。
这是一种简单的方法,可以通过创建测试路线来查看您想要的示例:
Route::match(['get','post'], '/test', function (Illuminate\Http\Request $request) {
dd($request->headers->all());
});
Post 到这条路线,你会看到你的 header,其中之一是 pubapi。请注意路由方法定义与您提交请求的方式相匹配(即 GET 或 POST)。
让我们将其应用于控制器 ArticleController:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class ArticleController extends Controller
{
public function index(Request $request)
{
$pubapi = $request->header('pubapi'); // string
$headers = $request->headers->all(); // array
/*
$pubapi === $headers['pubapi']
*/
}
}
实际上你是在静态调用它,这就是为什么它没有得到适当的请求class并抛出错误,可以这样做
use Illuminate\Http\Request;
//inside your controller
class YourClass extends Controller{
public function yourFunction(Request $request){
//for getting all the request
dd($request->all());
//for getting header content
dd($request->header('pubapi'));
}
}
您也可以通过 request()->header('pubapi')
完成。
与 Request
class 相比,我更喜欢使用 request()
辅助函数。因为在controller中不用use
/import any class就可以使用。
所以我不太确定如何解决这个问题我已经尝试了一些事情,我将在下面列出一个但是我想做的是将 http 请求中发送的信息存储在 PHP变量。
这是 Chrome 邮递员发送我想要发送的请求的视图。注意 "pubapi" 是 "header".
我一直在处理 Lumen 请求,您可以在此处查看记录 (http://lumen.laravel.com/docs/requests),并尝试使用下面的方法来显示它们,但它显然不起作用。
echo Request::all();
我将它放入我的控制器中并且我有...
use Illuminate\Http\Request;
在我的控制器中。
那么我怎么能说存储 header 我正在发送 "pubapi" 到我的控制器中的 php 变量?
编辑
不确定这是否有帮助,但是查看 Laravel 框架文档我看到了这个 http://laravel.com/api/5.0/Illuminate/Http/Request.html#method_header 尝试这样做会在我的代码中引发相同的错误。因此,例如,我尝试了以下操作并遇到了同样的错误。
echo Request::header('pubapi');
正在使用
echo app('request')->header('pubapi');
而不是
echo Request::header('pubapi');
似乎效果很好。有人可以提供额外的解释来解释为什么这有效而我原来的方法没有吗?
尝试将 Illuminate\Http\Request
更改为 Request
。
- use Illuminate\Http\Request;
+ use Request;
您在两个层面上误解了 Laravel 请求 object。
首先,您遇到的错误是因为您引用的是 object 而不是 Facade。 Facades 有一种将静态方法调用转发给 non-static 方法的方法。
其次,您将值作为 header 发送,但正在尝试访问请求参数。这永远不会给你你想要的。
这是一种简单的方法,可以通过创建测试路线来查看您想要的示例:
Route::match(['get','post'], '/test', function (Illuminate\Http\Request $request) {
dd($request->headers->all());
});
Post 到这条路线,你会看到你的 header,其中之一是 pubapi。请注意路由方法定义与您提交请求的方式相匹配(即 GET 或 POST)。
让我们将其应用于控制器 ArticleController:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class ArticleController extends Controller
{
public function index(Request $request)
{
$pubapi = $request->header('pubapi'); // string
$headers = $request->headers->all(); // array
/*
$pubapi === $headers['pubapi']
*/
}
}
实际上你是在静态调用它,这就是为什么它没有得到适当的请求class并抛出错误,可以这样做
use Illuminate\Http\Request;
//inside your controller
class YourClass extends Controller{
public function yourFunction(Request $request){
//for getting all the request
dd($request->all());
//for getting header content
dd($request->header('pubapi'));
}
}
您也可以通过 request()->header('pubapi')
完成。
与 Request
class 相比,我更喜欢使用 request()
辅助函数。因为在controller中不用use
/import any class就可以使用。