wake-up-neo.net

Laravel 5/Lumen Request Header?

Ich bin mir also nicht wirklich sicher, wie ich vorgehen soll. Ich habe ein paar Dinge ausprobiert und ich werde eine Liste hier aufführen. Was ich jedoch versuche, ist das Speichern von Informationen, die in einer http-Anfrage gesendet werden, in einer PHP - Variablen.

Hier ist eine Ansicht von Chrome Postman, dass ich die Anfrage gesendet habe, die ich nicht senden möchte. Hinweis "pubapi" ist ein "Header".

PostMan View

Ich habe mit Lumen-Anfragen herumgespielt, wie Sie hier dokumentiert sehen können ( http://Lumen.laravel.com/docs/requests ) und habe versucht, die folgenden Angaben zu verwenden, um sie möglicherweise anzuzeigen, aber es funktioniert nicht offensichtlich.

echo Request::all();

Ich stelle das in meinen Controller und ich habe ...

use Illuminate\Http\Request;

in meinem Controller.

Wie kann ich also sagen, dass ich den Header, den ich "pubapi" sende, in meinem PHP-Controller in einer PHP-Variable ablege?

EDIT

Ich bin mir nicht sicher, ob dies helfen wird, aber wenn ich mir die Laravel-Frameworks ansehe, sehe ich diesen http://laravel.com/api/5.0/Illuminate/Http/Request.html#method_header , wenn ich versuche, den gleichen Fehler zu erzeugen in meinem Code. So habe ich zum Beispiel folgendes versucht und den gleichen Fehler erreicht.

echo Request::header('pubapi');
17
kevingilbert100

Ändern Sie den Illuminate\Http\Request in Request.

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

Sie verstehen das Laravel-Anforderungsobjekt auf zwei Ebenen falsch. 

Erstens erhalten Sie einen Fehler, weil Sie auf das Objekt statt auf die Fassade verweisen. Fassaden können statische Methodenaufrufe an nicht statische Methoden weiterleiten.

Zweitens senden Sie den Wert als Header, versuchen jedoch, auf die Anforderungsparameter zuzugreifen. Dies wird dir niemals das geben, was du willst.

Hier ist ein einfacher Weg, um ein Beispiel dafür zu sehen, was Sie möchten, indem Sie eine Testroute wie folgt erstellen:

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

Wenn Sie zu dieser Route gehen, sehen Sie Ihre Kopfzeilen, von denen eine pubapi sein wird. Beachten Sie, dass die Definition der Routenmethode mit Ihrer Anfrage übereinstimmt (z. B. GET oder POST).

Wenden wir das auf den Controller ArticleController an:

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

Verwenden

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

Anstatt

echo Request::header('pubapi');

Schien perfekt zu funktionieren. Könnte jemand eine zusätzliche Erklärung dazu liefern, warum dies funktioniert hat und meine ursprüngliche Methode nicht funktioniert hat?

11
kevingilbert100

Eigentlich rufen Sie es statisch auf, deshalb wird es nicht in der entsprechenden Request-Klasse angezeigt und es wird ein Fehler ausgegeben. Dies kann folgendermaßen geschehen

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);
   }
}
1
Shahrukh Anwar