php - headers - Laravel 5/Lumen Solicitud de encabezado?
laravel log file (4)
En realidad lo está llamando de forma estática, es por eso que no está obteniendo la clase de solicitud adecuada y el error de lanzamiento, puede hacer lo siguiente
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);
}
}
Así que no estoy muy seguro de cómo hacerlo. He intentado algunas cosas y enumeraré una a continuación, sin embargo, lo que estoy tratando de hacer es almacenar la información enviada en una solicitud http en una variable de PHP.
Aquí hay una vista de Chrome Postman de mí enviando la solicitud que quiero enviar. Nota "pubapi" es un "encabezado".
He estado jugando con las solicitudes de Lumen como puede ver documentado aquí ( http://lumen.laravel.com/docs/requests ) y he intentado usar lo siguiente a continuación para posiblemente mostrarlas pero obviamente no funciona.
echo Request::all();
Estoy poniendo esto en mi controlador y tengo ...
use Illuminate/Http/Request;
en mi controlador
Entonces, ¿cómo podría decir almacenar el encabezado que estoy enviando "pubapi" a una variable php en mi controlador?
EDITAR
No estoy seguro de si esto ayudará, sin embargo, al mirar los documentos de Laravel frameworks, veo que este http://laravel.com/api/5.0/Illuminate/Http/Request.html#method_header intentando el mismo error en mi código. Entonces, por ejemplo, intenté lo siguiente y alcancé el mismo error.
echo Request::header(''pubapi'');
Intente cambiar el Illuminate/Http/Request
to Request
.
- use Illuminate/Http/Request;
+ use Request;
Usted malinterpreta el objeto de solicitud Laravel en dos niveles.
Primero, el error que está recibiendo es porque estaba haciendo referencia al objeto en lugar de a la Fachada. Las fachadas tienen una forma de reenviar llamadas de métodos estáticos a métodos no estáticos.
En segundo lugar, está enviando el valor como encabezado pero está intentando acceder a los parámetros de solicitud. Esto nunca te dará lo que quieres.
Esta es una forma sencilla de ver un ejemplo de lo que desea al crear una ruta de prueba como la siguiente:
Route::match([''get'',''post''], ''/test'', function (Illuminate/Http/Request $request) {
dd($request->headers->all());
});
Publicar en esta ruta y verá sus encabezados, uno de los cuales será pubapi . Tenga en cuenta que la definición del método de ruta coincide con la forma en que envía la solicitud (es decir, GET o POST).
Apliquemos esto al controlador, 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'']
*/
}
}
Utilizando
echo app(''request'')->header(''pubapi'');
En lugar de
echo Request::header(''pubapi'');
Parecía funcionar perfecto. ¿Podría alguien proporcionar una explicación adicional de por qué esto funcionó y mi método original no?