Laravel 5 / 流明请求标头?

2022-08-30 15:53:59

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

这是Chrome Postman的视图,我发送了我想要发送的请求。注意“pubapi”是一个“header”。

PostMan View

我一直在搞砸Lumen请求,因为你可以看到这里记录(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');

答案 1

您在两个层面上误解了 Laravel 请求对象。

首先,您遇到的错误是因为您引用的是对象而不是立面。立面有一种将静态方法调用转发给非静态方法的方法。

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

下面是一种简单的方法,通过创建如下所示的测试路由来查看所需内容的示例:

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

发布到此路线,您将看到您的标题,其中一个将是pubapi。请注意,路由方法定义与您提交请求的方式(即 GET 或 POST)相匹配。

让我们将此应用于控制器,文章控制器:

<?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']
        */
    }
}

答案 2

尝试将 更改为 。Illuminate\Http\RequestRequest

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

推荐