file_get_contents("php://input")
atau $HTTP_RAW_POST_DATA
- mana yang lebih baik untuk mendapatkan isi permintaan JSON?
Dan jenis permintaan ( GET
atau POST
) apa yang harus saya gunakan untuk mengirim data JSON saat menggunakan sisi klien XmlHTTPRequest
?
Pertanyaan saya terinspirasi dari jawaban ini: Bagaimana cara memposting JSON ke PHP dengan curl
Kutipan dari jawaban itu:
Dari perspektif protokol
file_get_contents("php://input")
sebenarnya lebih tepat, karena Anda tidak benar-benar memproses data bentuk multi bagian http.
sumber
$HTTP_RAW_POST_DATA
dianggap tidak digunakan lagi, danphp://input
dapat digunakan kembali.enable_post_data_reading
.Sumber: http://php.net/manual/en/wrappers.php.php .
sumber
$HTTP_RAW_POST_DATA
dianggap tidak digunakan lagi, danphp://input
dapat digunakan kembali.file_get_contents (php: // input) - mendapatkan data POST mentah dan Anda perlu menggunakannya saat menulis API dan membutuhkan input XML / JSON / ... yang tidak dapat didekodekan menjadi $ _POST oleh PHP Beberapa contoh:
kirim melalui string JSON pos
1.php
sumber
Aturan biasa harus berlaku untuk cara Anda mengirim permintaan. Jika permintaan adalah untuk mengambil informasi (misalnya hasil 'petunjuk' sebagian dari pencarian, atau halaman baru yang akan ditampilkan, dll ...) Anda dapat menggunakan GET. Jika data yang dikirim adalah bagian dari permintaan untuk mengubah sesuatu (memperbarui database, menghapus record, dll ..) maka gunakan POST.
Di sisi server, tidak ada alasan untuk menggunakan input mentah, kecuali jika Anda ingin mengambil seluruh blok data posting / dapatkan dalam sekali jalan. Anda dapat mengambil informasi spesifik yang Anda inginkan melalui array _GET / _POST seperti biasa. Library AJAX seperti MooTools / jQuery akan menangani bagian tersulit dalam melakukan panggilan AJAX yang sebenarnya dan mengkodekan data formulir ke dalam format yang sesuai untuk Anda.
sumber
<input type="hidden" name="data" value="json data here" />
sepenuhnya dapat diterima dan memungkinkan Anda mengambilnya secara sepele di sisi server dengan $ _REQUEST ['data'].Untuk data JSON, jauh lebih mudah untuk POST sebagai tipe konten "application / json". Jika Anda menggunakan GET, Anda harus mengenkode URL JSON dalam parameter dan itu agak berantakan. Selain itu, tidak ada batasan ukuran saat Anda melakukan POST. DAPATKAN ukuran jika sangat terbatas (maksimal 4K).
sumber
php.ini
.Pertanyaan kedua Anda mudah, GET memiliki batasan ukuran 1-2 kilobyte di sisi server dan browser, jadi segala jenis data yang lebih besar harus Anda kirim melalui POST.
sumber