Bagaimana untuk Mengeluarkan Badan HTTP Tersuai dengan CakePHP 3.4?

DDD
Lepaskan: 2024-10-26 17:42:30
asal
731 orang telah melayarinya

How to Output Custom HTTP Body with CakePHP 3.4?

Mengoutput Badan HTTP Tersuai dengan CakePHP 3.4

CakePHP 3.4 memperkenalkan pendekatan yang lebih ketat untuk pengendalian pengepala, melarang gema langsung data dalam pengawal. Percubaan untuk menggemakan kandungan, seperti yang dilihat di bawah, mengakibatkan ralat "Tidak dapat memancarkan pengepala":

<code class="php">public function test() {
    $this->autoRender = false;
    echo json_encode(['method' => __METHOD__, 'class' => get_called_class()]);
}</code>
Salin selepas log masuk

Mengapa CakePHP Mengeluh

Amalan ini tidak digalakkan dalam CakePHP atas beberapa sebab:

  • Ia boleh membawa kepada data tidak dikenali dalam persekitaran ujian.
  • Ia mengganggu keupayaan untuk menetapkan pengepala yang betul.
  • Ia mungkin mengakibatkan terputus data.

Kaedah Output yang Betul

Terdapat dua pendekatan yang disyorkan untuk menghantar output tersuai:

  1. Konfigurasikan Objek Respons:

    Menggunakan antara muka yang mematuhi PSR-7:

    <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>
    Salin selepas log masuk

    Menggunakan antara muka yang tidak digunakan:

    <code class="php">$content = json_encode(['method' => __METHOD__, 'class' => get_called_class()]);
    
    $this->response->body($content);
    $this->response->type('json');
    
    return $this->response;</code>
    Salin selepas log masuk
  2. Gunakan Paparan Bersiri:

    <code class="php">$content = ['method' => __METHOD__, 'class' => get_called_class()];
    
    $this->set('content', $content);
    $this->set('_serialize', 'content');</code>
    Salin selepas log masuk

    Kaedah ini memerlukan komponen Pengendali Permintaan dan pemetaan URL yang sesuai untuk menggunakan pemaparan JSON.

Bahan Rujukan

Untuk maklumat lanjut, rujuk sumber berikut:

  • Buku Masakan: Pengawal > Tindakan Pengawal
  • Buku Masakan: Permintaan & Objek Respons > Menetapkan Badan
  • Buku Masakan: Pandangan > Paparan JSON dan XML
  • Piawaian PHP FIG: Antara muka mesej HTTP PSR-7

Atas ialah kandungan terperinci Bagaimana untuk Mengeluarkan Badan HTTP Tersuai dengan CakePHP 3.4?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!