Laravel 5/Lumen Request Header?

Итак, я не совсем уверен, как это сделать. Я пробовал несколько вещей, и я перечислил один ниже, однако то, что я пытаюсь сделать, это хранить информацию, отправленную в HTTP-запросе в переменной PHP.

Вот сообщение от Chrome Postman от меня, отправляющего запрос, который я хочу отправить. Примечание. "Pubapi" - это "заголовок".

PostMan View

Я общался с запросами Lumen, как вы можете видеть здесь (http://lumen.laravel.com/docs/requests) и попытались использовать нижеприведенное ниже отображать их, но не работает, очевидно.

echo Request::all();

Я помещаю это в свой контроллер, и у меня есть...

use Illuminate\Http\Request;

в моем контроллере.

Итак, как я могу сохранить заголовок, который я отправляю "pubapi" в переменную php в моем контроллере?

ИЗМЕНИТЬ

Не уверен, что это поможет, однако, глядя на документы Laravel frameworks, я вижу это http://laravel.com/api/5.0/Illuminate/Http/Request.html#method_header, пытаясь сделать такую ​​же ошибку в моей код. Так, например, я попробовал следующее и получил ту же ошибку.

echo Request::header('pubapi');

Ответ 1

Попробуйте изменить Illuminate\Http\Request на Request.

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

Ответ 2

Вы неправильно понимаете объект запроса Laravel на двух уровнях.

Во-первых, ошибка, которую вы получаете, связана с тем, что вы ссылались на объект вместо фасада. Фасады имеют способ перенаправления вызовов статических методов на нестатические методы.

Во-вторых, вы отправляете значение в виде заголовка, но пытаетесь получить доступ к параметрам запроса. Это никогда не даст вам то, что вы хотите.

Вот простой способ увидеть пример того, что вы хотите, создав тестовый маршрут следующим образом:

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

Ответ 3

Использование

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

Вместо

echo Request::header('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'));
   }
}