file_get_contents("php://input")
или $HTTP_RAW_POST_DATA
- какой лучше получить тело запроса JSON?
И какой тип запроса ( GET
или POST
) я должен использовать для отправки данных JSON при использовании на стороне клиента XmlHTTPRequest
?
Мой вопрос был вдохновлен этим ответом: Как опубликовать JSON в PHP с помощью curl
Цитата из этого ответа:
С точки зрения протокола
file_get_contents("php://input")
это на самом деле более правильно, поскольку вы все равно не обрабатываете данные многостраничной формы http.
источник
$HTTP_RAW_POST_DATA
он считается устаревшим иphp://input
может использоваться повторно.enable_post_data_reading
.Источник: http://php.net/manual/en/wrappers.php.php .
источник
$HTTP_RAW_POST_DATA
он считается устаревшим иphp://input
может использоваться повторно.file_get_contents (php: // input) - получает необработанные данные POST, и вам нужно использовать это, когда вы пишете API и вам нужен ввод XML / JSON / ..., который не может быть декодирован в $ _POST с помощью PHP, например:
отправить по почте JSON строка
1.php
источник
В отношении того, как вы отправляете запрос, должны применяться обычные правила. Если запрос предназначен для получения информации (например, результат частичного поиска «подсказка», или новая страница, которая будет отображаться и т. Д.), Вы можете использовать GET. Если отправляемые данные являются частью запроса на изменение чего-либо (обновление базы данных, удаление записи и т. Д.), Используйте POST.
На стороне сервера нет причин использовать необработанный ввод, если только вы не хотите получить весь блок данных post / get за один раз. Вы можете получить конкретную информацию, которую хотите, через массивы _GET / _POST, как обычно. Библиотеки AJAX, такие как MooTools / jQuery, будут обрабатывать сложную часть выполнения фактических вызовов AJAX и кодирования данных формы в подходящие для вас форматы.
источник
<input type="hidden" name="data" value="json data here" />
вполне приемлемо и позволяет вам получить его тривиально на стороне сервера с помощью $ _REQUEST ['data'].Для данных JSON намного проще отправить их как тип содержимого «application / json». Если вы используете GET, вам нужно URL-кодировать JSON в параметре, и это немного беспорядочно. Кроме того, при выполнении POST ограничений по размеру нет. Размер GET, если он очень ограничен (максимум 4K).
источник
php.ini
.Ваш второй вопрос прост: GET имеет ограничение на размер в 1-2 килобайта как на стороне сервера, так и на стороне браузера, поэтому любые большие объемы данных вам придется отправлять через POST.
источник