Я создал 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 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.
RewriteBase /backend/api
мне пришлось добавитьRewriteBase /backend/api
в файл.htaccess
, чтобы заставить его работать в другой среде ( здесь ). давным-давно мне пришлось настроить его таким образом в еще одной другой среде. проверьте настройки вашего сервера и убедитесь, что режим перезаписи включен при использовании apache. Учебное пособие работает с моим текущим окружением.