Jadual Kandungan
Analisis fenomena masalah dan penyebab utama
Penyelesaian: Konfigurasikan Parser JSON YII2
Backend dengan betul memperoleh data JSON
Perkara yang perlu diperhatikan
Meringkaskan
Rumah pembangunan bahagian belakang tutorial php Penyelesaian Untuk Menerima Permintaan Pos Jenis Permohonan/JSON Di Backend YII2

Penyelesaian Untuk Menerima Permintaan Pos Jenis Permohonan/JSON Di Backend YII2

Jul 25, 2025 pm 07:36 PM
apache nginx ai capaian data red

Penyelesaian Untuk Menerima Permintaan Pos Jenis Permohonan/JSON Di Backend YII2

Artikel ini menghuraikan masalah umum dan penyelesaian backend yang gagal mendapatkan data badan permintaan dengan betul dalam rangka YII2 apabila hujung semasa menghantar permintaan pos dengan jenis aplikasi/JSON. Inti adalah bahawa parser permintaan lalai YII2 tidak memproses format JSON. Adalah perlu untuk membolehkan parsing data JSON automatik dengan memperkenalkan yii \ web \ jsonparser ke dalam konfigurasi aplikasi untuk memastikan bahawa pengawal backend dapat mengakses data pos dengan lancar.

Dalam pembangunan web moden, seni bina pemisahan depan menjadi semakin popular, dan ia telah menjadi amalan standard untuk front-end untuk menghantar data ke antara muka API back-end dalam format JSON melalui JavaScript asynchronous (seperti Fetch atau Axios). Walau bagaimanapun, apabila menggunakan rangka kerja YII2 sebagai backend, pemaju mungkin menghadapi masalah biasa: walaupun frontend berjaya menghantar permintaan pos jenis kandungan: jenis aplikasi/json, backend tidak dapat mendapatkan data melalui kaedah yii :: $ app->

Analisis fenomena masalah dan penyebab utama

Apabila bahagian semasa menggunakan API FETCH dan menetapkan jenis kandungan kepada Aplikasi/JSON, data dalam badan permintaan akan dihantar sebagai rentetan JSON asal. Contohnya:

 biarkan csrftoken = document.QuerySelector ("meta [name = 'csrf-token']"). Kandungan;
biarkan csrfParam = document.QuerySelector ("meta [name = 'csrf-param']"). Kandungan;

Ambil ("http://site.se/react/save-babysitter", {
  Kaedah: "pos",
  tajuk: {
    "Jenis kandungan": "aplikasi/json",
    "Terima": "Permohonan/Json",
    "csrf-param": csrfparam, // yii2 csrf parameter "x-csrf-token": csrftoken // yii2 csrf token},
  badan: json.stringify ({
    'id': 123,
    'Nama': 'Nama Ujian'
  })
}). Kemudian (response => response.json ())
  .THEN ((data) => console.log (data));

Di backend YII2, jika anda cuba mendapatkan data secara langsung melalui yii :: $ app-> request-> post ('name') atau yii :: $ app-> request-> post (), anda mungkin mendapati bahawa hasilnya kosong:

 Action ActionsaveBabySitter ()
{
    $ permintaan = yii :: $ app-> request;
    $ postData = $ request-> post ('name'); // Pada masa ini, $ postdata akan menjadi batal

    // jika anda cuba mendapatkan semua data pos // $ allPostData = $ request-> post (); // Pada masa ini, $ allpostData akan menjadi echo json_encode array kosong (['resepsi_data' => $ postdata]);
    Yii :: $ app-> end ();
}

Alasan untuk masalah ini adalah bahawa pelayan web (seperti Apache atau Nginx) hanya akan menghuraikan badan permintaan dua jenis kandungan: Aplikasi/X-WWW-Form-Urlencoded atau Multipart/Form-Data secara lalai, dan isi data parsed ke dalam pemboleh ubah global $ _post PHP. Untuk permintaan jenis permohonan/JSON, kandungan badan permintaan tidak akan dihuraikan secara automatik ke $ _POST. Secara lalai, Kaedah Komponen Permintaan YII2 () terutamanya bergantung pada $ _POST atau parser yang dikonfigurasi secara dalaman. Oleh kerana tidak ada parser JSON lalai, adalah mustahil untuk mengekstrak data JSON dari badan permintaan asal.

Penyelesaian: Konfigurasikan Parser JSON YII2

Agar YII2 untuk menghuraikan badan permintaan secara automatik aplikasi/json jenis dan membuat datanya boleh diakses melalui kaedah Yii :: $ App-> Post (), kita perlu menambah parser JSON kepada komponen permintaan dalam konfigurasi aplikasi Yii2 (biasanya config/web.php atau config/main.php).

Di bawah item Konfigurasi Komponen, cari atau tambahkan konfigurasi komponen permintaan dan tambahkan harta parsers di dalamnya:

 // config/web.php atau config/main.php
Kembali [
    'komponen' => [
        'Permintaan' => [
            // !!! Masukkan kunci rahsia dalam perkara berikut (jika kosong) - ini diperlukan oleh pengesahan kuki
            'CookievAlidationKey' => 'Secret-Key',
            'enableCsrfvalidation' => benar, // pastikan pengesahan csrf diaktifkan 'parsers' => [
                'Aplikasi/json' => 'yii \ web \ jsonparser',
                // Jika anda perlu berurusan dengan XML atau jenis lain, anda juga boleh menambah // 'aplikasi/xml' => 'yii \ web \ xmlparser',
            ],
            // ... konfigurasi komponen permintaan lain],
        // ... konfigurasi komponen lain],
    // ... konfigurasi peringkat atas lain];

Melalui konfigurasi di atas, apabila komponen permintaan YII2 menerima permintaan dengan aplikasi jenis kandungan/JSON, ia secara automatik akan memanggil Yii \ Web \ jsonParser untuk menghuraikan rentetan JSON dalam badan permintaan. Data parsed boleh diakses secara langsung melalui kaedah yii :: $ app-> request-> post ().

Backend dengan betul memperoleh data JSON

Selepas mengkonfigurasi JSONPARSER, kod pengawal anda boleh mendapatkan data JSON melalui yii :: $ app-> request-> post () kaedah seperti mengendalikan permintaan pos biasa:

 Action ActionsaveBabySitter ()
{
    $ permintaan = yii :: $ app-> request;

    // Dapatkan semua data pos parsed $ allPostData = $ request-> post ();

    // Dapatkan medan tertentu, seperti 'Nama'
    $ name = $ request-> post ('name');
    $ id = $ request-> post ('id');

    // Anda boleh melakukan pemprosesan logik perniagaan pada $ allpostdata, $ nama, $ id di sini // sebagai contoh: simpan ke pangkalan data, sahkan data, dan lain -lain // kembali respons jika ($ name && $ id) {
        kembali $ this-> asjson ([
            'status' => 'kejayaan',
            'Mesej' => 'Data berjaya!',
            'diterima_id' => $ id,
            'menerima_name' => $ nama
        ]);
    } else {
        kembali $ this-> asjson ([
            'status' => 'ralat',
            'Mesej' => 'Hilang data yang diperlukan.'
        ]);
    }
}

Perkara yang perlu diperhatikan

  1. Token CSRF : Apabila bahagian depan menghantar data JSON, jika YII2 membolehkan pengesahan CSRF (EnableCSRFValidation ditetapkan kepada benar), pastikan anda memasukkan token CSRF dalam tajuk permintaan. Ia biasanya diluluskan melalui pengepala X-CSRF dan CSRF-PARAM, seperti yang ditunjukkan dalam contoh kod front-end.
  2. Kaedah Akses Data : Selepas mengkonfigurasi jsonParser, kaedah yii :: $ app-> request-> post () secara automatik akan mengembalikan data JSON yang dihuraikan. Tidak perlu menggunakan file_get_contents secara manual ('php: // input') dan json_decode () untuk mendapatkan badan permintaan asal.
  3. Pengendalian ralat dan pengesahan data : Walaupun data berjaya dihuraikan, data yang diterima masih perlu disahkan dan ditapis dalam pengawal untuk memastikan kesahihan dan keselamatan data.
  4. Ketepatan Jenis Kandungan : Apabila bahagian depan menghantar permintaan, tajuk jenis kandungan mesti ditetapkan dengan tepat kepada Aplikasi/JSON, jika tidak, JSONPARSER tidak akan dicetuskan.

Meringkaskan

Dengan menambahkan Yii \ Web \ JSonParser ke komponen permintaan dalam konfigurasi aplikasi YII2, backend tidak dapat mendapatkan data apabila menghantar permintaan pos dalam format aplikasi/json. Ini membolehkan Yii2 untuk berinteraksi dengan lancar dengan rangka kerja front-end moden dan API, meningkatkan kecekapan pembangunan dan pemeliharaan kod. Konfigurasi yang betul dari parser dan digabungkan dengan pemprosesan CSRF yang betul adalah langkah utama dalam membina antara muka API YII2 yang mantap.

Atas ialah kandungan terperinci Penyelesaian Untuk Menerima Permintaan Pos Jenis Permohonan/JSON Di Backend YII2. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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

Alat AI Hot

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Skop pembolehubah PHP dijelaskan
1 bulan yang lalu By 百草
Mengulas kod dalam php
4 minggu yang lalu By 百草
Petua untuk menulis komen php
4 minggu yang lalu By 百草

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial PHP
1510
276
Cara menyelesaikan masalah 404 dalam talian Cara menyelesaikan masalah 404 dalam talian Aug 12, 2025 pm 09:21 PM

Cara Menyelesaikan Kesalahan Internet 404: Periksa sama ada URL adalah betul. Segarkan semula halaman. Clear Cache Pelayar: Chrome: Tiga titik di sudut kanan atas & gt; Lebih banyak alat & gt; Data pelayaran yang jelas & gt; Semak "gambar dan fail cache" & gt; Jelas data Firefox: Tiga garis mendatar di sudut kanan atas & gt; Pilihan & gt; Privasi dan Keselamatan & GT; Jelas Sejarah & GT; Semak "cache" & gt; Sahkan safari: hidangan

Bagaimanakah prinsipal 10,000 yuan boleh dilancarkan ke dalam jutaan mata wang? Lima langkah ini sangat diperlukan! Bagaimanakah prinsipal 10,000 yuan boleh dilancarkan ke dalam jutaan mata wang? Lima langkah ini sangat diperlukan! Aug 12, 2025 pm 07:03 PM

Dalam gelombang mata wang digital, menjadikan sepuluh ribu prinsipal menjadi satu juta bunyi seperti fantasi, tetapi bagi peserta yang menguasai metodologi yang betul, ini bukan jalan yang sangat mustahil. Proses ini penuh dengan risiko dan cabaran. Apa yang diperlukan bukanlah fantasi untuk menjadi kaya semalaman, tetapi satu set strategi operasi yang ketat dan sistematik. Setiap langkah perjalanan ini dikaitkan bersama dan membentuk daya penggerak teras dari perubahan kuantitatif kepada perubahan kualitatif. Lima langkah berikut menggambarkan jalan yang berduri tetapi mungkin untuk berjaya.

Bagaimanakah anda boleh membuat puluhan juta dalam bulatan mata wang setahun dengan pengetua 10,000? Strategi perdagangan kadar pemenang yang tinggi dibuat awam! Bagaimanakah anda boleh membuat puluhan juta dalam bulatan mata wang setahun dengan pengetua 10,000? Strategi perdagangan kadar pemenang yang tinggi dibuat awam! Aug 12, 2025 pm 07:18 PM

Ia bukan fantasi untuk menggunakan puluhan ribu yuan untuk mencapai keuntungan dalam pasaran mata wang bergelora. Ia adalah jalan yang curam yang dimiliki oleh bilangan orang yang sangat kecil. Laluan ini meninggalkan kestabilan dan konservatisme kewangan tradisional dan merangkumi volatiliti dan kitaran muktamad. Ia tidak memerlukan nasib, tetapi sistem perdagangan yang ketat, sejuk dan boleh ditiru. Sistem ini menggabungkan wawasan yang tepat mengenai sentimen pasaran, mendalam menggali ke dalam asas projek, dan disiplin pelaksanaan seperti keluli. Untuk mencapai matlamat ini, peniaga mesti melengkapkan transformasi dari peserta biasa ke pemangsa teratas.

Bagaimana membuat berjuta -juta dengan dua ribu prinsipal dalam bulatan mata wang? Penyelesaian lengkap untuk taktik sniper jangka pendek! Bagaimana membuat berjuta -juta dengan dua ribu prinsipal dalam bulatan mata wang? Penyelesaian lengkap untuk taktik sniper jangka pendek! Aug 12, 2025 pm 07:00 PM

Dalam gelombang mata wang digital, adalah impian banyak peserta untuk menggunakan prinsipal terhad untuk mencapai penghargaan yang besar terhadap kekayaan. Dua ribu modal dan satu juta sasaran bukanlah dari jangkauan. Apa yang diperlukan adalah disiplin perdagangan muktamad, rasa bau pasaran dan pelaksanaan sejuk. Inti metodologi ini bukan pelaburan nilai jangka panjang, tetapi pertempuran sniper jangka pendek intensiti dan pantas.

Bagaimana kepentingan kompaun yang cekap dalam prinsipal yang rendah dalam bulatan mata wang? Tujuh kaedah ini membolehkan anda memastikan anda menghasilkan wang! Bagaimana kepentingan kompaun yang cekap dalam prinsipal yang rendah dalam bulatan mata wang? Tujuh kaedah ini membolehkan anda memastikan anda menghasilkan wang! Aug 12, 2025 pm 07:15 PM

Dalam medan mata wang digital, saiz prinsipal bukanlah satu -satunya penentu kejayaan. Bagi peserta yang mempunyai prinsipal yang rendah, menguasai strategi kepentingan kompaun yang cekap dan memanfaatkan kuasa masa dan strategi juga dapat mencapai penghargaan yang mantap terhadap aset. Kuncinya adalah untuk mengamalkan cara berfikir yang betul dan melakukan disiplin operasi yang ketat. Berikut ini akan memperkenalkan tujuh kaedah teras untuk membantu pengguna harga rendah bergerak maju dalam lingkaran mata wang.

Laman web rasmi Bitcoin Exchange terbesar di dunia Binance Exchange Laman web rasmi Bitcoin Exchange terbesar di dunia Binance Exchange Aug 14, 2025 pm 01:48 PM

Binance adalah pertukaran cryptocurrency terbesar di dunia. Dengan kedalaman urus niaga yang besar, ekosistem perniagaan yang kaya dan kecairan yang tinggi, ia menyediakan perkhidmatan sepanjang masa seperti tempat, kontrak, pengurusan kewangan dan rantaian awam rantaian BNB. Pada masa yang sama, ia berusaha untuk memastikan keselamatan aset pengguna dan menggalakkan pembangunan telus melalui pelbagai langkah keselamatan dan usaha pematuhan.

Apakah dunia (duit syiling wai) yang Binance akan dilancarkan tidak lama lagi? Pengenalan kepada Sorotan Senibina Koin Wai, Ekonomi Token dan Senario Aplikasi Apakah dunia (duit syiling wai) yang Binance akan dilancarkan tidak lama lagi? Pengenalan kepada Sorotan Senibina Koin Wai, Ekonomi Token dan Senario Aplikasi Aug 12, 2025 pm 04:21 PM

Apakah visi teras dan sempadan produk dunia3? Apakah kemajuan dan pengesahan awam? Bagaimanakah peta tenaga kerja kecerdasan buatan ke dalam perniagaan sebenar di dalam dunia3? Bagaimanakah World3 menyambung ke ekosistem industri yang lebih luas? Token Economics ($ WAI) Prinsip Panduan $ WAI Token Peruntukan Peruntukan Peruntukan $ WAI Atribusi utiliti token dan jadual pelepasan jadual pelepasan gambaran keseluruhan di mana pembezaan teknikal World3 mencerminkan berbanding platform proksi yang serupa? Bagaimanakah pemaju mengintegrasikan dunia3 - adakah mereka perlu membina backends kompleks? Adakah ekosistem dan sokongan industri laluan terpantas (tiada kod) Laluan Extensible Path (Semi-Custom/Full Customization) Cycle World3 dipercayai? Risiko utama dan pertimbangan pematuhan

Platform tontonan dalam talian percuma untuk filem domestik, cadangan laman web blockbuster domestik terkini Platform tontonan dalam talian percuma untuk filem domestik, cadangan laman web blockbuster domestik terkini Aug 12, 2025 pm 07:36 PM

Platform yang disyorkan untuk menonton pemulihan 4K dan sumber percuma filem domestik adalah seperti berikut: 1. 1905 Rangkaian Filem menyediakan perpustakaan sumber negara, yang meliputi versi pemulihan 4K "Farewell My Concubine" dan "Operasi Laut Merah" dan filem-filem lain, yang menyokong kualiti imej 4K ultra-jelas dan kedua-dua maklumat filem dan televisyen; 2. Video Sohu melancarkan pelan pemulihan filem Hong Kong klasik, dan mengoptimumkan kualiti filem lama seperti "Warna Benar Hero" dan beberapa filem boleh ditonton secara percuma; 3. Tonton filem di dewan pemeriksaan Douyin tanpa iklan, menyediakan filem seperti siri "Charlotte's Troubles" dan "Wolf Warrior", dan menyokong kualiti imej 1080p; 4. Teater Maya Arkib Filem China kerap melancarkan versi pemulihan 4K filem klasik domestik, disertai dengan wawancara pengarah dan analisis akademik; 5. TV HUSHU TV dan Tianyi Fokus pada filem lama klasik dan video tema merah, dengan kandungan undang -undang dan komprehensif

See all articles