Jadual Kandungan
Memahami punca utama data pos yang kosong
Penyelesaian: Konfigurasikan Parser JSON untuk YII2
1. Konfigurasi Web.php
2. Contoh front-end menghantar data JSON
3. Dapatkan data dari pengawal backend
Meringkaskan
Rumah pembangunan bahagian belakang tutorial php Mengendalikan permintaan pos JSON di YII2: Menyelesaikan masalah data kosong dan panduan konfigurasi parsing

Mengendalikan permintaan pos JSON di YII2: Menyelesaikan masalah data kosong dan panduan konfigurasi parsing

Jul 23, 2025 pm 06:30 PM
vue apache nginx pasangan nilai kunci red

Mengendalikan permintaan pos JSON di YII2: Menyelesaikan masalah data kosong dan panduan konfigurasi parsing

Artikel ini bertujuan untuk menyelesaikan masalah bahawa pembolehubah $ _POST kosong apabila rangka kerja YII2 menerima permintaan pos permohonan/jenis JSON. Inti adalah untuk memahami bagaimana pelayan web mengendalikan jenis kandungan yang berlainan, dan untuk membimbing pemaju untuk membolehkan parsing automatik YII2 dari badan permintaan JSON dengan mengkonfigurasi Yii \ Web \ jsonparser. Artikel ini akan menyediakan contoh konfigurasi terperinci, kod penghantaran JSON front-end, dan kaedah pengambilalihan data back-end untuk memastikan aplikasi YII2 dapat memproses dengan betul dan menggunakan data masuk dalam format JSON.

Memahami punca utama data pos yang kosong

Apabila menghantar permintaan pos menggunakan API Fetch JavaScript atau teknologi front-end lain, jika jenis kandungan header permintaan ditetapkan kepada aplikasi/JSON, aplikasi YII2 back-end mungkin tidak dapat memperoleh data secara lalai melalui yii :: $ app-> request-> post () atau $ _post variable hyperglobal.

Ini kerana apabila pelayan web (seperti Apache, nginx) memproses permintaan HTTP, ia hanya secara automatik memohon badan-badan permohonan aplikasi/x-www-urlencoded atau multipart/form-data dan memisahkannya ke dalam pemboleh ubah $ _post. Untuk permintaan jenis aplikasi/JSON, pelayan merawatnya sebagai badan mentah dan tidak akan menyelesaikan secara automatik kepada pasangan nilai utama. Oleh itu, apabila YII2 memperoleh data dari $ _post secara lalai, secara semulajadi akan mendapati bahawa data itu kosong.

Penyelesaian: Konfigurasikan Parser JSON untuk YII2

Agar YII2 untuk menghuraikan badan permohonan permohonan/jenis JSON yang betul, kita perlu mengkonfigurasi Yii \ Web \ JSonParser dalam komponen permintaan aplikasi. Parser ini membaca badan permintaan asal dan mengasingkannya ke dalam array atau objek PHP, dan YII2 dapat mengakses data ini melalui kaedah standard seperti yii :: $ app-> request-> post () atau yii :: $ app-> request-> getBodyParams ().

1. Konfigurasi Web.php

Dalam fail konfigurasi aplikasi YII2 (biasanya config/web.php), cari bahagian komponen, ubah suai konfigurasi komponen permintaan, dan tambahkan atribut parsers:

 // config/web.php
'komponen' => [
    'Permintaan' => [
        // !!! Masukkan kunci rahsia dalam perkara berikut (jika kosong) - ini diperlukan oleh pengesahan kuki
        'CookievAlidationKey' => 'Your-Secret-Key', // Ganti dengan kunci anda 'parsers' => [
            'Aplikasi/json' => 'yii \ web \ jsonparser',
            // Jika hujung depan anda juga boleh menghantar jenis json lain, seperti 'teks/json', anda juga boleh menambah // 'teks/json' => 'yii \ web \ jsonparser',
        ],
        // ... konfigurasi komponen permintaan lain],
    // ... komponen lain]

Melalui konfigurasi di atas, apabila YII2 menerima permintaan dengan aplikasi jenis kandungan/JSON, ia secara automatik akan menggunakan Yii \ Web \ jsonParser untuk menghuraikan badan permintaan.

2. Contoh front-end menghantar data JSON

Berikut adalah contoh menghantar data JSON menggunakan API JavaScript Fetch. Sila ambil perhatian bahawa pengambilalihan dan tetapan token YII2 CSRF dimasukkan untuk memastikan keselamatan permintaan tersebut.

 // Dapatkan token CSRF dan nama parameter const csrftoken = document.QuerySelector ("meta [name = 'csrf-token']"). Kandungan;
const csrfParam = document.QuerySelector ("meta [name = 'csrf-param']"). Kandungan;

// Assume e.id dan this.state.Changename adalah data yang akan dihantar const DataToSend = {
    'id': e.id,
    'Nama': this.state.changename
};

Ambil ("http://site.se/react/save-babysitter", {
    Kaedah: "pos",
    tajuk: {
        "Jenis kandungan": "aplikasi/json", // secara eksplisit menentukan jenis kandungan ke json
        "Terima": "Permohonan/Json",
        [csrfparam]: csrftoken, // gunakan nama parameter csrf sebagai kunci, dan token csrf sebagai nilai // "x-csrf-token": csrftoken // kaedah penyampaian token csrf yang biasa, yii2 juga menyokong},
    Badan: json.stringify (datatosend) // tukar objek javascript ke json string})
.tua (respons => {
    jika (! response.ok) {
        // Mengendalikan kesilapan HTTP, seperti 404, 500
        membuang ralat baru (`HTTP Ralat! Status: $ {response.status}`);
    }
    RETURN Response.json (); // Parse JSON Response})
.THEN ((data) => {
    Console.log ("Kejayaan:", Data);
})
.catch ((error) => {
    Console.error ("Ralat semasa operasi mengambil:", ralat);
});

NOTIS:

  • Menetapkan jenis kandungan: Aplikasi/JSON dalam tajuk adalah kunci.
  • Badan mesti menjadi rentetan selepas json.stringify ().
  • Cara token CSRF boleh dihantar mungkin berbeza dengan versi atau konfigurasi YII2, dan contoh di atas menunjukkan dua cara yang sama.

3. Dapatkan data dari pengawal backend

Selepas mengkonfigurasi JSonParser, dalam pengawal YII2, anda boleh menggunakan kaedah Yii :: $ App-> Post-> Post () untuk mendapatkan data JSON yang dihuraikan seperti anda mendapatkan data pos biasa. Jika anda perlu mendapatkan semua parameter pos, jangan tentukan nama utama.

 // Pengawal/ReactController.php (dengan mengandaikan pengawal anda dipanggil ReactController)

App Namespace \ Controllers;

Gunakan Yii;
Gunakan yii \ web \ controller;
Gunakan yii \ filter \ verbfilter; // Sekiranya anda perlu menyekat Kaedah Kaedah Permintaan ReactController Extends Controller
{
    // Sekiranya anda perlu melumpuhkan pengesahan CSRF (dilumpuhkan dalam persekitaran pengeluaran tidak disyorkan kecuali anda memahami risiko dan mempunyai langkah keselamatan yang lain)
    awam $ enableCrfValidation = false;

    tingkah laku fungsi awam ()
    {
        Kembali [
            'kata kerja' => [
                'kelas' => verbfilter :: kelas,
                'Tindakan' => [
                    'Save-Babysitter' => ['Post'], // Pastikan hanya permintaan pos dibenarkan],
            ],
        ];
    }

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

        // Dapatkan keseluruhan data JSON yang dihuraikan (sebagai array bersekutu)
        $ data = $ permintaan-> pos ();

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

        // Sahkan data (langkah penting!)
        jika (kosong ($ nama) || kosong ($ id)) {
            Yii :: $ app-> response-> statuscode = 400; // permintaan yang tidak baik
            kembali $ this-> asjson (['success' => false, 'message' => 'hilang parameter yang diperlukan'));
        }

        // Katakan data diproses dan disimpan ke pangkalan data di sini // ...

        // Return JSON Response Return $ this-> Asjson ([[
            'Kejayaan' => Benar,
            'Mesej' => 'Data yang diterima dengan jayanya',
            'diterima_data' => [
                'id' => $ id,
                'Nama' => $ Nama
            ]
        ]);
    }
}

Nota:

  • Pengesahan CSRF: Secara lalai, YII2 melakukan pengesahan CSRF pada semua permintaan pos. Jika anda menghantar data JSON melalui API Fetch, anda perlu memastikan bahawa token CSRF diluluskan dengan betul dalam tajuk permintaan atau dalam badan permintaan. Dalam kod depan di atas, kami lulus token CSRF dalam tajuk permintaan melalui [CSRFParam]: CSRFTOKEN. Jika API anda tidak bertauliah atau sesi, dan anda memahami risiko, anda boleh melumpuhkan pengesahan CSRF pada tahap pengawal atau modul (seperti $ enableCSRFValidation = false; dalam contoh), tetapi ini biasanya tidak disyorkan.
  • Pengambilalihan Data: Selepas mengkonfigurasi jsonparser, yii :: $ app-> request-> post () secara automatik akan mengembalikan data JSON yang dihuraikan. Anda juga boleh menggunakan yii :: $ app-> request-> getBodyParams () untuk mendapatkan semua parameter badan permintaan, atau yii :: $ app-> request-> getRawbody () untuk mendapatkan rentetan badan permintaan asal yang tidak disengajakan.
  • Pengesahan dan Keselamatan Data: Walaupun data berjaya diterima, perlu mengesahkan, menapis dan membersihkan data dengan tegas pada backend untuk mengelakkan kelemahan keselamatan seperti suntikan SQL dan XSS. Jangan gunakan data yang diterima secara langsung untuk operasi pangkalan data.
  • Pengendalian ralat: Harus ada mekanisme pengendalian ralat yang mantap pada kedua-dua bahagian depan dan back-end supaya ia dapat memberikan maklum balas dan debug tepat pada masanya jika permintaan gagal atau data tidak memenuhi jangkaan.

Meringkaskan

Dengan mengkonfigurasi yii \ Web \ jSonParser Dalam komponen permintaan aplikasi YII2, kami dapat menyelesaikan masalah data permohonan/JSON Type Post yang kosong. Ini membolehkan Yii2 untuk berinteraksi dengan lancar dengan rangka kerja front-end moden (seperti React, Vue, Sangular) untuk membina aplikasi pemisahan front-end dan back-end yang kuat. Ingat bahawa pengesahan data dan amalan keselamatan sentiasa kritikal apabila memproses sebarang input pengguna.

Atas ialah kandungan terperinci Mengendalikan permintaan pos JSON di YII2: Menyelesaikan masalah data kosong dan panduan konfigurasi parsing. 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!

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
1596
276
Ramalan Trend Harga Sol: Adakah ia akan meletup semula pada tahun 2025? Ramalan Trend Harga Sol: Adakah ia akan meletup semula pada tahun 2025? Aug 07, 2025 pm 08:06 PM

Ya, SOL mungkin meletup lagi pada tahun 2025. 1) Peningkatan teknologi seperti pelancaran firedancer, yang dijangka meningkatkan TPS hingga satu juta tahap; 2) naratif baru Depin dan AI menggalakkan pembangunan ekologi; 3) data rantaian terus pulih, TVL melebihi AS $ 2 bilion; 4) dana institusi pulangan digabungkan dengan jangkaan ETF; 5) Jika asas dan sentimen pasaran bekerjasama, harga dijangka mencecah AS $ 250, tetapi anda perlu berhati -hati dengan sejarah downtime, persaingan yang semakin meningkat dan risiko tekanan jualan token. Pelabur harus membina kedudukan dalam kelompok dan menggabungkan strategi pelarasan dinamik data secara rantaian. Wabak akhir bergantung kepada kesan sinergistik pelaksanaan teknologi, aktiviti ekologi dan resonans modal.

Bolehkah Solana (SOL) memecahkan $ 200 pada separuh kedua tahun 2025? Ramalan terkini Bolehkah Solana (SOL) memecahkan $ 200 pada separuh kedua tahun 2025? Ramalan terkini Aug 07, 2025 pm 11:09 PM

Solana mungkin melebihi AS $ 200 pada separuh kedua tahun 2025, dengan syarat peningkatan teknologi, pembangunan ekologi dan makro-persekitaran yang diselaraskan bertambah baik; 2. Faktor sokongan termasuk peningkatan firedancer untuk meningkatkan prestasi, duit syiling defi dan meme menggalakkan kemakmuran ekologi, kepentingan institusi, dan kelulusan ETF yang berpotensi, dan dasar monetari yang menguntungkan aset risiko yang menggalakkan; 3. Risiko utama termasuk bahaya tersembunyi kestabilan rangkaian, persaingan rantaian awam yang semakin meningkat, keraguan berpusat, dan ketidakpastian pengawalseliaan global; 4. Secara teknikal, US $ 200 adalah tahap rintangan utama, dan AS $ 120-150 adalah julat sokongan penting, dan ia dijangka mencapai tahap tinggi AS $ 260 selepas terobosan; 5. Penghakiman yang komprehensif, di bawah persekitaran inovasi berterusan, aktiviti ekologi dan pasaran lembu, harga sol akan berada di bawah 2025

Solana (SOL) memecahkan $ 200, dengan sasaran akhir tahun $ 1,000? Solana (SOL) memecahkan $ 200, dengan sasaran akhir tahun $ 1,000? Aug 07, 2025 pm 11:24 PM

Sebab -sebab utama mengapa harga Solana melebihi AS $ 200 termasuk: 1. Ekosistem berkembang pesat, dan projek Defi, NFT dan Depin aktif; 2. Ledakan duit syiling meme telah membawa sejumlah besar pengguna dan dana; 3. Sama ada ia boleh mencapai AS $ 1,000 menjelang akhir tahun ini bergantung kepada kesinambungan pasaran lembu, pelaksanaan teknologi dan kestabilan rangkaian, tetapi ia menghadapi volatiliti pasaran dan cabaran yang kompetitif. Platform perdagangan arus perdana yang disyorkan: 1. Binance mempunyai kecairan terbaik; 2. Ouyi menyokong ekosistem Web3; 3. Huobi (HTX) stabil dan boleh dipercayai; 4. Gate.io disenaraikan dengan cepat, sesuai untuk pelaburan peringkat awal. Pelabur harus secara menyeluruh menilai risiko dan memilih platform pematuhan untuk mengemukakan

Apakah analisis sentimen dalam perdagangan cryptocurrency? Apakah analisis sentimen dalam perdagangan cryptocurrency? Aug 14, 2025 am 11:15 AM

Jadual Kandungan Apakah analisis sentimen dalam perdagangan cryptocurrency? Mengapa analisis sentimen penting dalam sumber pelaburan cryptocurrency sumber data emosi a. Platform Media Sosial b. Media berita c. Alat untuk analisis sentimen dan teknologi alat yang biasa digunakan dalam analisis sentimen: Teknik yang diterima pakai: Mengintegrasikan analisis sentimen ke dalam strategi perdagangan bagaimana peniaga menggunakannya: Strategi Contoh: Dengan mengandaikan senario senario perdagangan BTC Penetapan: Isyarat Emosi: Tafsiran Pedagang: Keputusan: Batasan dan Risiko Analisis Sentimen Menggunakan Emosi Kajian 2025 baru -baru ini oleh Hamid

Bagaimana cara membetulkan msvcp71.dll yang hilang di komputer anda? Hanya ada tiga kaedah yang diperlukan Bagaimana cara membetulkan msvcp71.dll yang hilang di komputer anda? Hanya ada tiga kaedah yang diperlukan Aug 14, 2025 pm 08:03 PM

Komputer meminta "MSVCP71.dll hilang dari komputer", yang biasanya kerana sistem tidak mempunyai komponen yang kritikal, yang menyebabkan perisian tidak dimuatkan secara normal. Artikel ini akan menganalisis fungsi fail dan punca akar kesilapan, dan menyediakan tiga penyelesaian yang cekap untuk membantu anda memulihkan program dengan cepat. 1. Apakah msvcp71.dll? MSVCP71.dll tergolong dalam fail Perpustakaan Runtime Core Microsoft Visualc 2003 dan tergolong dalam jenis Perpustakaan Link Dinamik (DLL). Ia digunakan terutamanya untuk menyokong program yang ditulis dalam C untuk memanggil fungsi standard, templat STL dan modul pemprosesan data asas. Banyak aplikasi dan permainan klasik yang dibangunkan pada awal 2000 -an bergantung pada fail ini untuk dijalankan. Setelah fail hilang atau rosak,

Ekosistem Cardano (ADA Mata Wang) 'Vektor' Blockchain menjanjikan untuk melancarkan akhir serta -merta Ekosistem Cardano (ADA Mata Wang) 'Vektor' Blockchain menjanjikan untuk melancarkan akhir serta -merta Aug 11, 2025 am 09:18 AM

Waktu pemakaian yang panjang untuk urus niaga direktori adalah hambatan utama yang menyekat pelaksanaan aplikasi kewangan blockchain. Yayasan ApexFusion secara aktif mempromosikan proses pematuhan MICA. ApexFusion akan melepaskan Vektor buat kali pertama di Persidangan Rareevo pada hari Sabtu ini, sebuah blok baru yang serasi dengan ekosistem Cardano, yang mendakwa mempunyai kemudahan transaksi segera dan kelajuan pemprosesan 10 kali lebih cepat daripada rangkaian yang sedia ada. ApexFusion adalah syarikat yang memberi tumpuan kepada infrastruktur blockchain dan akan melancarkan rangkaian ujian berprestasi tinggi yang dipanggil Vector, disesuaikan untuk pengguna institusi yang ingin memasuki medan Web3 dan selaras dengan ekosistem Cardano. Vektor adalah model berasaskan UTXO

Apa itu Coin Zora? Harga melebihi $ 0.1! Apakah potensi masa depan duit syiling Zora? Apa itu Coin Zora? Harga melebihi $ 0.1! Apakah potensi masa depan duit syiling Zora? Aug 12, 2025 pm 04:42 PM

Jadual Kandungan Zora Coin Berita dan Kemas Kini Terkini Apa itu Zora? Siapa yang mengasaskan Zora? Bagaimanakah pasukan pembangunan Zora dan pelaburan di Zora berfungsi? Apa itu Coin Zora? Zora Token Economics ZORA Token Airdrop Zora Coin Harga Analisis Trend Zora (Zora) Outlook Masa Depan dan Analisis Risiko Zora (Zora) Ramalan Harga FAQ Summary Zora pada asalnya merupakan platform NFT berasaskan Ethereum yang membolehkan pengguna membeli, menjual dan membuat koleksi NFT tanpa membayar fees. Dengan pembangunan yang berterusan, projek itu telah berubah menjadi platform sosial dan memudahkan sesiapa

Di manakah fail konfigurasi Apache? Di manakah fail konfigurasi Apache? Aug 08, 2025 am 01:20 AM

Ondebian/ubuntu, themainapacheconfigurationfileis/etc/apache2/apache2.conf, withadditionalconfigurationsin/etc/apache2/sites-av Ailable/dan/etc/apache2/conf-available/.2.onrhel/centos/fedora, itistypically/etc/httpd/conf/httpd.conf, withextrafilesin/etc/h

See all articles