Download the PHP package grigor/yii2-rest without Composer
On this page you can find all versions of the php package grigor/yii2-rest. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Informations about the package yii2-rest
yii2-rest
Работа с RESTful. Позволяет любой класс использовать в качестве action.
Хорошо использовать с генератором конфигурации на основе аннотаций yii2-generator
Установка
Предпочтительный способ установки этого расширения - через composer.
Запустите команду
или добавьте в composer.json
Настройка с учетом присутствия в системе yii2-generator
Скопируйте папку frontend или backend в корень проекта и переименуйте как вам нравится, у меня будет api. И не забудьте добавить в файл common/config/bootstrap.php такую строчку Yii::setAlias('@api', dirname(dirname(DIR)) . '/api');
Файл common/config/params.php может быть таким:
Файл console/config/main.php может быть таким:
Файл api/config/main.php может быть таким:
Параметр
'rulesPath' => $params['rulesPath'], указывает на файл правил для роутов, он примерно выглядит так:
Параметр
'serviceDirectoryPath' => $params['serviceDirectoryPath'], - указывает на папку где лежат настройки action (ими могут быть любые классы) Настройки могут находится и в базе и файлах, зависит от реализации ServiceMetaDataReaderInterface Пример настройки (одна настройка один файл) , если планируется хранить в файла то название может быть таким eca98246-8562-4edb-8d5d-07c65558d9da.php да вообще любым
Параметр (не обязательный) - 'serializer' => 'api\serialize\SerializeProduct',
если не хочется заморачиваться с fields() и extraFields() можно использовать свой сериалайзер. Он должен иметь один метод обязательный __invoke(...); таким образом можно сериализовать как одну сущность, так и весь DataProviderInterface
Параметр (не обязательный) - 'context' => 'api\context\FindModel', ограничитель условно может быть таким:
Вернуть он может массив с недостающими в отрабатывающем методе параметрами. Например у нас есть метод public function getProfile(string $id) а api-шка должна отдавать профиль текущего юзера. Т.е. для пользователя системы нет параметра id получается url примерно такой /v2/user/profile метод GET и все, но мы используем public function getProfile(string $id) где нужно передать id user-а в данном случае текущего.
Для всего этого дела удачно подходят сервисы и репозитории. Система может использовать аннотации в качестве заместителей файлов конфигураций, если используется yii2-generator. На основе аннотаций генерируются настройки и правила, и записываться либо в файлы, либо в базу (реализуйте интерфейс ServiceMetaDataReaderInterface чтобы он получал настройки из базы для этого дела), это кому как нравится, в последнем случае можно легко организовать админку управления своим апи. Эти системы разделены потому, что в большинстве случаев yii2-generator на проде не нужен, но весьма удобен когда система разрабатывается и его отсутствие не влияет на работоспособность приложения.
Как пользоваться yii2-generator-ом почитайте на его странице
В папке example вы найдете примеры файлов в zip-архиве. Не забывайте про namespace-ы они у вас могут быть другими.