Laravel 5 / Lumen Request Header?

前端 未结 5 608
你的背包
你的背包 2021-02-05 04:32

So I am not really sure how to go about this I have tried a few things and I will list one below however what I am trying to do is store information sent in a http request in a

相关标签:
5条回答
  • 2021-02-05 04:50

    You misunderstand the Laravel request object on two levels.

    First, the error you are getting is because you were referencing the object instead of the Facade. Facades have a way of forwarding static method calls to non-static methods.

    Second, you are sending the value as a header but are trying to access the request parameters. This will never give you what you want.

    Here is a simple way to see an example of what you want by creating a test route like so:

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

    Post to this route and you will see your headers, one of which will be pubapi. Pay attention that the route method definition matches how you are submitting the request (ie GET or POST).

    Let's apply this to the controller, 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']
            */
        }
    }
    
    0 讨论(0)
  • 2021-02-05 04:56

    Try to change the Illuminate\Http\Request to Request.

    - use Illuminate\Http\Request;
    + use Request;
    
    0 讨论(0)
  • 2021-02-05 04:57

    Actually you are calling it statically, that's why it is not getting appropriate Request class and throwing error, can do as follows

    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'));
       }
    }
    
    0 讨论(0)
  • 2021-02-05 05:01

    Using

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

    Instead of

    echo Request::header('pubapi');
    

    Seemed to work perfect. Could someone provide additional explanation to why this worked and my original method didn't?

    0 讨论(0)
  • 2021-02-05 05:11

    You can do it by request()->header('pubapi') also.

    I prefer to use request() helper function than Request class its self. Because it can be used without use/import any class in the controller.

    0 讨论(0)
提交回复
热议问题