Обмен данными в формате JSON в Yii 2 (для REST API)

Мы уже рассматривали общие механизмы работы с JSON в PHP. Сегодня мы изучим приёмы работы с ним в приложениях на основе фреймворка Yii 2, которые несколько отличаются от описанных ранее.

В Yii 2 работу с JSON можно разделить на две неравные составляющие. Это отправка JSON по и его получение.

Отправка выполняется предельно просто. Для того, чтобы отправить объект модели или просто любой PHP объект достаточно в контроллере заменить стандартный рендеринг представления, на метод asJson, который сформирует ответ сервера соответствующим образом.

Этот приём работает всегда в любом контроллере.

С получением JSON всё гораздо сложнее.

Дело в том, что «обычный» контроллер, который наследуется от класса yii\web\Controller, не может получить JSON из HTTP запроса с типом содержимого application/json. Кроме того, для обработки application/json необходимо дополнительно включить поддержку на уровне приложения.

Поддержка на уровне приложения подключается в конфигурационном файле web.php. В разделе request нужно добавить подраздел parsers с указанием компонента для разбора поступающих JSON данных.

После этого можно изменить базовый класс контроллера на yii\rest\Controller и начать работу с JSON данными, получаемыми приложением.

Получить JSON можно при помощи стандартного метода bodyParams. Но, в случае Yii 2 исходные данные поступают как ассоциативный массив, а не строка. Потому вместо использования функции json_decode требуется приведение к object. После чего можно работать с JSON как с обычным PHP объектом.

Вышеуказанные приём позволяют не только наладить работу с JSON в web приложении, но и лежат в основе работы REST API, которые строятся на базе Yii 2. Собственно на это и сделан основной акцент в данной статье, так как REST API на Yii 2 на сегодняшний день достаточно популярны.

Вопрос работы с JSON в Yii 2 также актуален и для обычного AJAX. Но, об этом в отдельной статье.

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

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