【问题标题】:Laravel 5 / Lumen Request Header?Laravel 5 /流明请求标头?
【发布时间】:2015-07-06 13:14:00
【问题描述】:

所以我不太确定该怎么做

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

我一直在处理 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');

【问题讨论】:

    标签: php rest laravel lumen


    【解决方案1】:

    使用

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

    代替

    echo Request::header('pubapi');
    

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

    【讨论】:

    • 您正在尝试使用 Facade,但您正在导入完整的 Request 类。您的使用声明应为“使用请求;”而不是“使用 Illuminate\Http\Request;”第一个是外观,第二个是实际的请求类。如果您更改您的使用声明,那么 Request::all() 将起作用。或者,您可以使用 \Request::all() 并且它会起作用。
    【解决方案2】:

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

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

    【讨论】:

    • 已经想通了,但我想无论如何我都会给你最好的答案哈!谢谢!!
    • @kmgilbert100,您可以将 Illuminate\Http\Request 与注入一起使用(将 Request $request 参数放入控制器函数。这是我认为最好的解决方案。)
    【解决方案3】:

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

    首先,您遇到的错误是因为您引用的是对象而不是外观。 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']
            */
        }
    }
    

    【讨论】:

      【解决方案4】:

      其实你是静态调用它,所以它没有得到合适的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'));
         }
      }
      

      【讨论】:

        【解决方案5】:

        您也可以通过request()-&gt;header('pubapi') 完成。

        我更喜欢使用 request() 辅助函数而不是 Request 类它自己。因为它可以不用use/import控制器中的任何类来使用。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2019-01-06
          • 1970-01-01
          • 2014-01-18
          • 1970-01-01
          • 2016-01-11
          • 2015-12-24
          • 2017-11-15
          相关资源
          最近更新 更多