Heim >Backend-Entwicklung >PHP-Tutorial >Detaillierte Erläuterung der in Laravel 5.5 bereitgestellten reaktionsfähigen Schnittstelle zur Beantwortung von Anfragen

Detaillierte Erläuterung der in Laravel 5.5 bereitgestellten reaktionsfähigen Schnittstelle zur Beantwortung von Anfragen

jacklove
jackloveOriginal
2018-07-07 17:58:362827Durchsuche

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

Artikel, die Sie interessieren könnten:

php operation zip in Erklärung zum Anzeigen der Bilder im komprimierten Paket ohne Dekomprimierung des Pakets

Detaillierte Erläuterung einer Beispielanalyse der Methode zur Implementierung der Check-in-Funktion in PHP

Detaillierte Erklärung zur Lösung des Speicherauslastungsproblems, das durch zu viele PHP-FPM-Prozesse unter Linux verursacht wird

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn