file_get_contents (“php://вход”) или $HTTP_RAW_POST_DATA, какой лучше для получения тела запроса JSON?

file_get_contents("php://input") или $HTTP_RAW_POST_DATA - какой лучше для получения тела запроса JSON?

И которые запрашивают тип (GET или POST) если я использую для отправки данных JSON при использовании стороны клиента XmlHTTPRequest?

Мой вопрос был вдохновлен этим ответом: Как отправить JSON на PHP с завихрением

Кавычка из того ответа:

С точки зрения протокола file_get_contents("php://input") на самом деле более корректно, так как Вы действительно не обрабатываете http многослойные данные формы так или иначе.

112
задан Boolean_Type 11 May 2018 в 12:01
поделиться

4 ответа

Фактически php: // input позволяет вам читать необработанные данные POST.

Это менее ресурсоемкая альтернатива $ HTTP_RAW_POST_DATA и не требует каких-либо специальных директив php.ini .

php: // input недоступен с enctype = "multipart / form-data" .

Ссылка: http://php.net/manual/en/wrappers.php.php

188
ответ дан 24 November 2019 в 02:50
поделиться

Для отправки запроса должны применяться обычные правила. Если запрос предназначен для получения информации (например,частичный результат поиска «подсказка» или новая страница, которая будет отображаться и т. д.), вы можете использовать GET. Если отправляемые данные являются частью запроса на изменение чего-либо (обновление базы данных, удаление записи и т. Д.), Используйте POST.

На стороне сервера нет причин использовать необработанный ввод, если только вы не хотите получить весь блок данных post / get за один раз. Вы можете получить конкретную информацию, которую хотите, через массивы _GET / _POST, как обычно. Библиотеки AJAX, такие как MooTools / jQuery, будут обрабатывать сложную часть выполнения фактических вызовов AJAX и кодирования данных формы в подходящие для вас форматы.

3
ответ дан 24 November 2019 в 02:50
поделиться

Ваш второй вопрос прост: GET имеет ограничение на размер в 1-2 килобайта как на стороне сервера, так и на стороне браузера, поэтому любые большие объемы данных вам придется отправлять через POST.

2
ответ дан 24 November 2019 в 02:50
поделиться

Для данных JSON гораздо проще отправить их на POST как тип содержимого "application / json". Если вы используете GET, вам нужно URL-кодировать JSON в параметре, и это немного беспорядочно. Кроме того, при выполнении POST нет ограничений по размеру. Размер GET, если он очень ограничен (максимум 4K).

2
ответ дан 24 November 2019 в 02:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: