Wie gebe ich einen benutzerdefinierten HTTP-Body mit CakePHP 3.4 aus?

DDD
Freigeben: 2024-10-26 17:42:30
Original
731 Leute haben es durchsucht

How to Output Custom HTTP Body with CakePHP 3.4?

Ausgabe eines benutzerdefinierten HTTP-Bodys mit CakePHP 3.4

CakePHP 3.4 führt einen strengeren Ansatz für die Header-Verarbeitung ein und verhindert das direkte Echo von Daten innerhalb von Controllern. Der Versuch, Inhalte wiederzugeben, wie unten dargestellt, führt zu der Fehlermeldung „Kopfzeilen können nicht ausgegeben werden“:

<code class="php">public function test() {
    $this->autoRender = false;
    echo json_encode(['method' => __METHOD__, 'class' => get_called_class()]);
}</code>
Nach dem Login kopieren

Warum sich CakePHP beschwert

Von dieser Vorgehensweise wird in CakePHP abgeraten Aus mehreren Gründen:

  • Es kann dazu führen, dass Daten in Testumgebungen nicht erkannt werden.
  • Es beeinträchtigt die Fähigkeit, die richtigen Header festzulegen.
  • Es kann zu abgeschnittenen Daten führen Daten.

Richtige Ausgabemethoden

Es gibt zwei empfohlene Ansätze zum Senden benutzerdefinierter Ausgaben:

  1. Konfigurieren Sie das Antwortobjekt:

    Verwenden Sie die PSR-7-kompatible Schnittstelle:

    <code class="php">$content = json_encode(['method' => __METHOD__, 'class' => get_called_class()]);
    
    $this->response = $this->response->withStringBody($content);
    $this->response = $this->response->withType('json');
    
    return $this->response;</code>
    Nach dem Login kopieren

    Verwenden Sie die veraltete Schnittstelle:

    <code class="php">$content = json_encode(['method' => __METHOD__, 'class' => get_called_class()]);
    
    $this->response->body($content);
    $this->response->type('json');
    
    return $this->response;</code>
    Nach dem Login kopieren
  2. Verwenden Sie eine serialisierte Ansicht:

    <code class="php">$content = ['method' => __METHOD__, 'class' => get_called_class()];
    
    $this->set('content', $content);
    $this->set('_serialize', 'content');</code>
    Nach dem Login kopieren

    Diese Methode erfordert die Request-Handler-Komponente und die entsprechende URL-Zuordnung, um das JSON-Rendering zu nutzen.

Referenzmaterial

Weitere Informationen finden Sie in den folgenden Ressourcen:

  • Kochbuch: Controller > Controller-Aktionen
  • Kochbuch: Anforderungs- und Antwortobjekte > Den Körper festigen
  • Kochbuch: Ansichten > JSON- und XML-Ansichten
  • PHP FIG-Standards: PSR-7 HTTP-Nachrichtenschnittstellen

Das obige ist der detaillierte Inhalt vonWie gebe ich einen benutzerdefinierten HTTP-Body mit CakePHP 3.4 aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!