Laravel 5/Lumen请求标题?

kev*_*100 20 php rest laravel lumen

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

这是Chrome Postman发送我想要发送的请求的视图.注意"pubapi"是一个"标题".

PostMan查看

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

echo Request::all();
Run Code Online (Sandbox Code Playgroud)

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

use Illuminate\Http\Request;
Run Code Online (Sandbox Code Playgroud)

在我的控制器中.

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

编辑

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

echo Request::header('pubapi');
Run Code Online (Sandbox Code Playgroud)

小智 34

你在两个层面上误解了Laravel请求对象.

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

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

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

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

发布到这条路线,你会看到你的标题,其中一个将是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']
        */
    }
}
Run Code Online (Sandbox Code Playgroud)


bal*_*ant 19

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

- use Illuminate\Http\Request;
+ use Request;
Run Code Online (Sandbox Code Playgroud)


kev*_*100 11

运用

echo app('request')->header('pubapi');
Run Code Online (Sandbox Code Playgroud)

代替

echo Request::header('pubapi');
Run Code Online (Sandbox Code Playgroud)

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

  • 您正在尝试使用Facade,但是您要导入完整的Request类.您的使用声明应为"使用请求"; 而不是"使用Illuminate\Http\Request;" 第一个是外观,第二个是实际的请求类.如果更改了use语句,则Request :: all()将起作用.或者你可以使用\ Request :: all(),它会工作. (5认同)