Как реализовать собственные методы обработки REST API в Yii2?
После прочтения документации и пробы yii\rest\ActiveController встал вопрос об организации собственных методов, которые не просто выдают данные или заносят их, но и в процессе вызывают какую-то бизнес логику. Как это реализовать?
На текущий момент есть классическая таблица user и ее модель, где есть поля id, name, age. Как сделать, например, при обращении к /user/1 какую-то свою бизнес логику? Или ля этого надо делать обычные контроллеры?
Ответы (1 шт):
Автор решения: Максим Н Епихин
→ Ссылка
Вопрос решился следующим образом:
- Создали модуль api, в котором сделали контроллеры, модели и прочее
- Контроллеры наследуем от
yii\rest\Controller - В маршрутизации пишем:
'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 задаем шаблоны для кастомных методов.