Yii2 UrlManager REST API GET ошибка 404 при задании параметра id

1

Я создал REST API с базовым шаблоном Yii2. Я внесли некоторые изменения в webconfig, чтобы использовать ссылки, такие как веб-пользователи и веб-пользователи /1. Он отлично работает, но я больше не мог получить доступ к веб-индексу. Поэтому я добавил еще несколько правил для UrlManager.

'urlManager' => [
        'enablePrettyUrl' => true,
        'enableStrictParsing' => true,
        'showScriptName' => false,
        'rules' => [
            //basic/web
            '<controller:\w+>/<id:\d+>' => '<controller>/view',
            '<controller:[\w\-]+>/<action:[\w\-]+>/<id:[\d]+>' => '<controller>/<action>',
            '<controller:\w+>/<action:\w+>' => '<controller>/<action>',


            //basic/web/users
            ['class' => 'yii\rest\UrlRule', 'controller' => ['user', 'car']],
            //basic/web/countries
            //Id is een string, vandaar de tokens
            ['class' => 'yii\rest\UrlRule', 'controller' => 'country', 'tokens' => ['{id}' => '<id:\\w+>']],
        ],
    ],

С приведенным выше кодом я могу получить доступ к веб-индексу. Я также мог бы получить доступ к веб/пользователям, чтобы получить список пользователей. но я не могу получить доступ к веб/пользователям /1. он дает ошибку 404.

редактировать:

'urlManager' => [
        'enablePrettyUrl' => true,
        'enableStrictParsing' => true,
        'showScriptName' => false,
        'rules' => [
            //basic/web
            /*
            '<controller:\w+>/<id:\d+>' => '<controller>/view',
            '<controller:[\w\-]+>/<action:[\w\-]+>/<id:[\d]+>' => '<controller>/<action>',
            '<controller:\w+>/<action:\w+>' => '<controller>/<action>',
            */



            //basic/web/users
            ['class' => 'yii\rest\UrlRule', 'controller' => ['user', 'car', 'site']],
            //basic/web/countries
            //Id is een string, vandaar de tokens
            ['class' => 'yii\rest\UrlRule', 'controller' => 'country', 'tokens' => ['{id}' => '<id:\\w+>']],
        ],
    ],

Я изменил это так. Теперь я могу получить доступ к веб-сайтам из-за плюрализации. Но если я перейду на веб-сайт/сайт/например, это приведет к ошибке 404. Так что это не лучшее решение

Теги:
rest
yii2
yii2-basic-app

1 ответ

1
Лучший ответ

Я думаю, будет нелегко поддерживать REST API и веб-страницы HTML в одном и том же файле конфигурации. Например, файлы cookie и сеанс обычно отключены с помощью REST, как рекомендовано его безгражданностью, в то время как вам может потребоваться аутентификация пользователя на классической HTML-странице.

Я бы рекомендовал изменить структуру вашего приложения и включить REST API в качестве независимого модуля с собственной конфигурацией маршрутизации и, возможно, его собственным сценарием ввода без пропусков в web записи.

Лучшая структура может выглядеть так: (из приведенного ниже руководства)

+ web
+ config
+ controllers
...
+ api
  + config
  + modules
    + v1
      + controllers
  .htaccess
  index.php

Затем вы сможете открывать свои HTML файлы в web/sites/about процессе поиска ресурсов в api/users/1. Каждая запись может содержать свои собственные controllers и собственные models или они могут совместно использовать @app/models. Проверьте этот шаг за шагом, чтобы узнать, как его реализовать:

Создание API REST для шаблона Yii2-basic- by Joachim Werner

Вы также можете проверить api и auth папки в этом приложении, где оба являются независимыми API REST.

  • 0
    Я не могу заставить это работать. Я получаю пустые страницы, как большинство людей в комментариях. Я пробовал некоторые из этих решений, но это не работает.
  • 1
    пустая страница, как правило, неправильной конфигурации сервера. В демонстрационном приложении, на которое я RewriteBase /backend/api мне пришлось добавить RewriteBase /backend/api в файл .htaccess , чтобы заставить его работать в другой среде ( здесь ). давным-давно мне пришлось настроить его таким образом в еще одной другой среде. проверьте настройки вашего сервера и убедитесь, что режим перезаписи включен при использовании apache. Учебное пособие работает с моим текущим окружением.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню