Как реализовать собственные методы обработки REST API в Yii2?

Рейтинг: 0Ответов: 1Опубликовано: 18.01.2023

После прочтения документации и пробы yii\rest\ActiveController встал вопрос об организации собственных методов, которые не просто выдают данные или заносят их, но и в процессе вызывают какую-то бизнес логику. Как это реализовать?

На текущий момент есть классическая таблица user и ее модель, где есть поля id, name, age. Как сделать, например, при обращении к /user/1 какую-то свою бизнес логику? Или ля этого надо делать обычные контроллеры?

Ответы

▲ 0

Вопрос решился следующим образом:

  1. Создали модуль api, в котором сделали контроллеры, модели и прочее
  2. Контроллеры наследуем от yii\rest\Controller
  3. В маршрутизации пишем:
'urlManager' => [
    'enablePrettyUrl' => true,
    'showScriptName' => false,
    'rules' => [
        [
            'class' => UrlRule::class,
            'controller' => [
                'api/<controller>',
            ],
            'extraPatterns' => [
                'GET api/<controller>/based' => 'api/<controller>/based'
            ],
            'pluralize' => false, // Исключает множественное число английской формы
        ],

        '<action>'=>'site/<action>',
        '<controller:[\w\-]+>/<id:\d+>' => '<controller>/view',
        '<controller:[\w\-]+>/<action:[\w\-]+>/<id:\d+>' => '<controller>/<action>',
        '<controller:[\w\-]+>/<action:[\w\-]+' => '<controller>/<action>',
    ],
],

Тут в extraPatterns задаем шаблоны для кастомных методов.