Маршрутизация URL-адресов Yii2 Rest
У меня проблема с вызовом URL-адреса моего rest api в Yii2. Я хочу вызвать URL-адрес, например:
Http://localhost/index-dev.php/myapi/collection/18
Где 18 - идентификатор.
В моем web.php конфигурация, у меня есть следующий код с другими настройками от других программистов:
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => true,
'rules' => [
['class' => 'yii\rest\UrlRule', 'controller' => ['coding/nodes', 'coding/scales','myapi/collection']],
'<controller:\w+>/<id:\d+>' => '<controller>/view',
],
],
Когда я вызываю свой URL-адрес, я получаю
Не найдено (#404)
Что я делаю не так?
3 answers
Для доступа к одной модели вам необходимо использовать множественное число имени класса модели в URL-адресе:
Http://localhost/index-dev.php/myapi/collections/18
Взгляните на документацию yii\rest\UrlRule:
Приведенный выше код создаст целый набор правил URL, поддерживающих следующие конечные точки API RESTful:
- 'ПОМЕСТИТЬ, ИСПРАВИТЬ пользователей/'=> 'пользователь/обновление': обновить пользователя
- 'УДАЛИТЬ пользователей/' => "пользователь/удалить": удалить пользователя
- 'ПОЛУЧИТЬ, ГЛАВНЫЕ пользователи/'=> 'пользователь/просмотр': возвращает сведения/обзор/параметры пользователя
- "ОПУБЛИКОВАТЬ пользователей" => "пользователь/создать": создать нового пользователя
- 'ПОЛУЧИТЬ, ГЛАВНЫЕ пользователи'=> 'пользователь/индекс': возвращает список/обзор/параметры пользователей
- 'пользователи/'=> 'пользователь/параметры': обрабатывать все необработанные глаголы пользователя
- 'пользователи'=> 'пользователь/параметры': обрабатывать все необработанные глаголы коллекции пользователей
У меня была та же проблема, вы можете отключить prural
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => true,
'rules' => [
['class' => 'yii\rest\UrlRule', 'controller' => ['coding/nodes', 'coding/scales','myapi/collection']],
'<controller:\w+>/<id:\d+>' => '<controller>/view',
'pluralize' => false,
],
],
Я предлагаю создать отдельный модуль для API и настроить свой urlManager, как...:)
'urlManager' => [
'enablePrettyUrl' => true,
'enableStrictParsing' => true,
'showScriptName' => false,
'rules' => [
[
'class' => 'yii\rest\UrlRule',
'pluralize'=>false,
'controller' => ['v1/country','v1/user'],
'tokens' => [
'{id}' => '<id:\\w+>'
],
'extraPatterns' => [
'POST register' => 'register', //from url
'GET exists'=>'exists',
'POST login'=>'login',
'POST follow'=>'follow',
'POST category'=>'category',
'PUT profile'=>'profile',
'PUT change_password'=>'change_password',
'PUT feed_interested'=>'feed_interested',
],
]
],
]
Более подробно @ Создание Api Rest