@falcon_sapsan
DevOps

Как работать в Yii2 со слешем в конце URL?

'urlManager' => [
            'enablePrettyUrl' => true,
            'showScriptName' => false,
            'rules' => [
                [
                    'class' => 'yii\rest\UrlRule',
                    'controller' => 'accounts'
                ],
                'OPTIONS accounts/<account_uuid:[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}>' => 'accounts/view',
                'GET accounts/<account_uuid:[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}>' => 'accounts/view',
                'PUT accounts/<account_uuid:[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}>' => 'accounts/update',
                'POST accounts' => 'accounts/create',
                'OPTIONS accounts' => 'accounts/index',
                'GET accounts' => 'accounts/index',
            ]

На фронте стоит Angular6 он перед каждым запросом предварительно отправляет OPTIONS
Yii корректно отвечает если
OPTIONS accounts/ 200
OPTIONS accounts 404
Если запрос будет без слеша в конце, то скажет 404

А POST запрос, наоборот.. работает корректно когда нет слеша в конце URL
POST accounts/ 404
POST accounts отрабатывает корректно

Собственно как привести к одному виду (со слешем или без) POST и OPTIONS запросы.. чтобы они работать по одинаковому URL

Еще используется PUT accounts/f5cf9bce-f12c-11e7-8f22-52540012f636 - на нем OPTIONS и PUT запросы работает одинаково.. тем путаницы со слешем в конце.
  • Вопрос задан
  • 1257 просмотров
Пригласить эксперта
Ответы на вопрос 2
slo_nik
@slo_nik Куратор тега Yii
Добрый вечер.
Попробуйте такие настройки.
'urlManager' => [
      'enablePrettyUrl' => true,
      'showScriptName' => false,
      'suffix' => '/',
      'normalizer' => [
          'class' => 'yii\web\UrlNormalizer',
          'normalizeTrailingSlash' => true,
          'collapseSlashes' => true,
       ],
// остальные настройки urlManager
]

Или просто добавьте только настройку 'suffix' => '/',
Ответ написан
VladimirAndreev
@VladimirAndreev
php web dev
то есть если запросы посылает фронт, то все работает?
тогда в чем смысл париться из-за того, что у кого-то левого что-то не работает?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы