PHP: как получить POST JSON

PHP: как получить POST JSON

От автора: когда я работал в Mozilla, мне нужно было написать транзакцию аутентификации типа OAuth между Bugzilla и Phabricator. Эта задача вынудила меня вернуться в мир PHP, к языку, который я давно не использую (с версии ~5.2). С помощью PHP я только создаю темы и плагины на WP для своего блога. Возврат к языку, который не практиковался годами, кажется чем-то совершенно новым. Начинаешь замечать шаблоны и методы, о которых и не догадывался раньше.

Где-то в транзакции аутентификации Phabricator должен был получать POST-запрос с JSON. Я думал, что данные окажутся в глобальном массиве $_POST, однако переменная была пуста. И как же мне получить POST-данные? Получить POST JSON в PHP можно с помощью следующих строк:

# Получить JSON как строку
$json_str = file_get_contents('php://input');

# Получить объект
$json_obj = json_decode($json_str);

Раньше я думал, что функция file_get_contents умеет вытягивать контент только из локальных файлов и URL’ов. Однако с помощью специального адреса php://input с ее помощью можно получать JSON-данные в виде строки. Для перевода JSON-строки в рабочий объект/массив можно использовать json_decode.

В принципе, понятно, почему JSON не обрабатывается в $_POST, у него ведь нет ключа. Нам нужно просто получить данные, а сделать это можно с помощью php://input. Можете проверить обработку JSON+POST в cURL.

Автор: David Walsh

Практический курс по созданию веб-приложения на PHP & MySQL с нуля!

Изучите курс и создайте ваше первое приложение на PHP всего за 3 дня!

Изучить курс

Источник: https://davidwalsh.name/

Редакция: Команда webformyself.

Разработка веб-приложения на PHP

Создайте веб-приложение на PHP на примере приема платежей на сайте

Получить

Метки:

Похожие статьи:

Комментарии Вконтакте:

Комментарии Facebook:

Комментарии (1)

  1. r0ma

    На днях получал/отправлял PUT подобным образом.
    В комментариях к официальной документации нашел аналогичный прием.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Я не робот.

Spam Protection by WP-SpamFree