Маршрутизация 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)

Что я делаю не так?

Author: Good-bye, 2015-05-18

3 answers

Для доступа к одной модели вам необходимо использовать множественное число имени класса модели в URL-адресе:

Http://localhost/index-dev.php/myapi/collections/18

Взгляните на документацию yii\rest\UrlRule:

Приведенный выше код создаст целый набор правил URL, поддерживающих следующие конечные точки API RESTful:

  • 'ПОМЕСТИТЬ, ИСПРАВИТЬ пользователей/'=> 'пользователь/обновление': обновить пользователя
  • 'УДАЛИТЬ пользователей/' => "пользователь/удалить": удалить пользователя
  • 'ПОЛУЧИТЬ, ГЛАВНЫЕ пользователи/'=> 'пользователь/просмотр': возвращает сведения/обзор/параметры пользователя
  • "ОПУБЛИКОВАТЬ пользователей" => "пользователь/создать": создать нового пользователя
  • 'ПОЛУЧИТЬ, ГЛАВНЫЕ пользователи'=> 'пользователь/индекс': возвращает список/обзор/параметры пользователей
  • 'пользователи/'=> 'пользователь/параметры': обрабатывать все необработанные глаголы пользователя
  • 'пользователи'=> 'пользователь/параметры': обрабатывать все необработанные глаголы коллекции пользователей
 4
Author: vim, 2015-05-18 12:18:19

У меня была та же проблема, вы можете отключить 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,
    ],            
],
 5
Author: Hugo, 2015-05-18 20:58:16

Я предлагаю создать отдельный модуль для 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

 3
Author: Kalpesh Desai, 2016-01-21 06:27:47