Dieser Artikel stellt Ihnen hauptsächlich die relevanten Informationen über die in Laravel 5.5 bereitgestellte reaktionsfähige Schnittstelle vor, die anhand von Beispielcodes ausführlich vorgestellt wird Freunde, bitte folgen Sie dem Herausgeber, um gemeinsam zu lernen.
Vorwort
Laravel 5.5 wird auch die nächste LTS-Version (Long Term Support) sein. Das bedeutet, dass es zwei Jahre Fixes und drei Jahre Sicherheitsupdates gibt. Das Gleiche gilt für Laravel 5.1, auch wenn der zweijährige Bugfix-Support dieses Jahr endet.
Laravel 5.5 fügt dem Routing einen neuen Rückgabetyp hinzu: Verantwortlich. Diese Schnittstelle ermöglicht die automatische Konvertierung von Objekten in eine Standard-HTTP-Antwortschnittstelle, wenn sie von einem Controller oder einer Abschlussroute zurückgegeben werden. Jedes Objekt, das die Responsable-Schnittstelle implementiert, muss eine Methode namens toResponse()
implementieren, die das Objekt in ein HTTP-Antwortobjekt konvertiert.
Sehen Sie sich das Beispiel an:
use Illuminate\Contracts\Support\Responsable; class ExampleObject implements Responsable { public function __construct($name = null) { $this->name = $name ?? 'Teapot'; } public function status() { switch(strtolower($this->name)) { case 'teapot': return 418; default: return 200; } } public function toResponse() { return response( "Hello {$this->name}", $this->status(), ['X-Person' => $this->name] ); } }
Wenn Sie dieses Beispielobjekt im Routing verwenden, können Sie Folgendes tun:
Route::get('/hello', function() { return new ExampleObject(request('name')); });
Im Laravel-Framework kann die Route-Klasse jetzt bei der Vorbereitung des Antwortinhalts nach diesem Typ suchen (Implementierung der Responsable-Schnittstelle):
if ($response instanceof Responsable) { $response = $response->toResponse(); }
Wenn Sie mehrere Antworttypen verwenden, um Ihren Antwortinhalt im AppHttpResponses-Namespace zu organisieren, können Sie sich auf das folgende Beispiel beziehen. Dieses Beispiel zeigt, wie Posts (eine Sammlung mehrerer Instanzen) unterstützt werden:
posts = $posts; } public function toResponse() { return response()->json($this->transformPosts()); } protected function transformPosts() { return $this->posts->map(function ($post) { return [ 'title' => $post->title, 'description' => $post->description, 'body' => $post->body, 'published_date' => $post->published_at->toIso8601String(), 'created' => $post->created_at->toIso8601String(), ]; }); } }
Das Obige ist nur ein einfaches Beispiel zur Simulation eines einfachen Anwendungsszenarios: Geben Sie a zurück JSON-Antwort, aber Sie hoffen, dass die Antwortschicht nicht einfach die integrierte Implementierung zur JSONisierung des Objekts verwendet, sondern auch eine gewisse Inhaltsverarbeitung durchführt. Im obigen Beispiel wird außerdem davon ausgegangen, dass die AppHttpResponsesResponse-Klasse einige grundlegende Funktionen bereitstellen kann. Natürlich kann die Antwortschicht auch einen Konvertierungscode enthalten (ähnlich wie bei Fractal), anstatt eine solche Konvertierung direkt im Controller durchzuführen.
Der Controller-Code, der im obigen Beispiel mit der PostIndexResponse-Klasse zusammenarbeitet, ähnelt dem folgenden:
Wenn Sie weitere Details zu dieser Schnittstelle erfahren möchten, können Sie sich das Commit der entsprechenden Schnittstelle ansehen Code im Projekt.
Zusammenfassung
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der in Laravel 5.5 bereitgestellten reaktionsfähigen Schnittstelle zur Beantwortung von Anfragen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!