Не работают методы REST

Всё что касается построения API
Ответить
Аватара пользователя
maksimepikhin
Сообщения: 3
Зарегистрирован: 2023.01.20, 11:45
Откуда: Москва

Не работают методы REST

Сообщение maksimepikhin »

Здравствуйте.
Имеются модули api по пути modules/api. В нем есть еще один модуль org: modules/api/org. В модуле org есть контроллер PersonController по пути: modules/api/org/presentation/controllers/PersonController.php - который наследуется от yii\rest\ActiveController.

Пишу конфигурацию для маршрутизации:

Код: Выделить всё

'aliases' => [
    '@bower' => '@vendor/bower-asset',
    '@npm' => '@vendor/npm-asset',
    '@modules' => '@app/modules',
    '@api' => '@app/modules/api',
],
'components' => [
    ...
    'urlManager' => [
            'enablePrettyUrl' => true,
            'showScriptName' => false,
            'rules' => [
                [
                    'class' => UrlRule::class,
                    'prefix' => 'api/org',
                    'controller' => [
                        'person'
                    ],
                    'patterns' => [
                        'PUT,PATCH {id}' => 'update',
                        'DELETE {id}' => 'delete',
                        'GET,HEAD {id}' => 'view',
                        'POST' => 'create',
                        'GET,HEAD' => 'index',
                        '{id}' => 'options',
                        '' => 'options',
                    ]
                ],

                '<action>'=>'site/<action>',
                '<controller:[\w\-]+>/<id:\d+>' => '<controller>/view',
                '<controller:[\w\-]+>/<action:[\w\-]+>/<id:\d+>' => '<controller>/<action>',
                '<controller:[\w\-]+>/<action:[\w\-]+' => '<controller>/<action>',
            ],
        ],
    ],
],
'modules' => [
    'api' => [
        'class' => ApiModule::class,
        'basePath' => '@api',
        'modules' => [
            'org' => [
                'basePath' => '@api/org',
                'class' => ApiOrgModule::class
            ]
        ]
    ],
],
Но так получается, что запрос localhost:8082/api/org/person отрабатывает корректно, а вот localhost:8082/api/org/person/2 нет и выдает 404 ошибку. До дебагу обнаружил, что он считает 2 действием контроллера.

Подскажите, как решить проблему?
Аватара пользователя
SiZE
Сообщения: 2813
Зарегистрирован: 2011.09.21, 12:39
Откуда: Perm
Контактная информация:

Re: Не работают методы REST

Сообщение SiZE »

Правила выполняются по очереди и когда находится подходящее, менеджер прекращает перебор.

Посмотрите документацию https://www.yiiframework.com/doc/guide/ ... tp-methods, паттерны для http методов описываются как <id:\d+> а не {id} - это не ларавель)
Ответить