Laravel 5 / Lumen请求标题?

时间:2015-04-27 21:54:56

标签: php rest laravel lumen

所以我不确定如何解决这个问题我已经尝试了一些事情,我将在下面列出一个但是我想要做的是在PHP变量中的http请求中发送的存储信息。

以下是Chrome Postman发送我想要发送的请求的视图。注意“pubapi”是一个“标题”。

PostMan View

我一直在搞乱流明请求,因为你可以看到这里记录的文件(http://lumen.laravel.com/docs/requests),并尝试使用下面的内容来显示它们,但它显然不起作用。

echo Request::all();

我把它放在我的控制器中,我有......

use Illuminate\Http\Request;

在我的控制器中。

那么我怎么能说我将“pubapi”发送到控制器中的php变量中存储标题?

修改

不确定这是否会有所帮助,但是看看Laravel框架文档我看到这个http://laravel.com/api/5.0/Illuminate/Http/Request.html#method_header尝试这会在我的代码中引发相同的错误。所以例如我尝试了以下内容并达到了同样的错误。

echo Request::header('pubapi');

5 个答案:

答案 0 :(得分:30)

您在两个级别上误解了Laravel请求对象。

首先,您得到的错误是因为您引用的是对象而不是Facade。 Facades有一种方法可以将静态方法调用转发给非静态方法。

其次,您将该值作为标头发送,但正在尝试访问请求参数。这永远不会给你你想要的东西。

这是一种通过创建测试路径来查看所需内容的示例的简单方法:

Route::match(['get','post'], '/test', function (Illuminate\Http\Request $request) {
    dd($request->headers->all());
});

发布到此路线,您将看到您的标题,其中一个将是 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']
        */
    }
}

答案 1 :(得分:17)

尝试将Illuminate\Http\Request更改为Request

- use Illuminate\Http\Request;
+ use Request;

答案 2 :(得分:11)

使用

echo app('request')->header('pubapi');

而不是

echo Request::header('pubapi');

似乎工作完美。有人可以提供额外的解释,为什么这有效,而我的原始方法没有?

答案 3 :(得分:1)

实际上你是静态调用它,这就是为什么它没有得到合适的Request类和抛出错误,可以这样做

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);
   }
}

答案 4 :(得分:0)

您也可以通过request()->header('pubapi')来做到这一点。

request()类本身相比,我更喜欢使用Request辅助函数。因为它可以不使用use /在控制器中导入任何类而使用。