Страница 1 из 1

Rest API не работает запрос вида /v1/pages/1

Добавлено: 2020.01.15, 21:15
Diakon
Если я делаю запрос /v1/page - все нормально, возвращаются все записи, но когда я делаю запрос /v1/page/1 или /v1/pages/1 (пытаюсь получить ID записи) - 404
urlManager:

Код: Выделить всё

return [
    'enablePrettyUrl' => true,
    'showScriptName' => false,
    'rules' => [
        // Api
        ['class' => 'yii\rest\UrlRule', 'controller' => 'api/v1/page'],
    ],
];
PageController:

Код: Выделить всё

<?php
namespace api\modules\v1\controllers;

class PageController extends ApiController
{
    public $modelClass = 'api\modules\v1\models\Pages';

}

Я настроил api на поддомен - открывается запросом на api.sitename.ru/v1/page - возвращает список
Но вот если запрашивать ID записи, например api.sitename.ru/v1/pages/1 или api.sitename.ru/v1/page/1 - возращает 404
Пожалуйста, подскажите, что не так

Re: Rest API не работает запрос вида /v1/pages/1

Добавлено: 2020.01.15, 22:09
yiiliveext

Код: Выделить всё

return [
    'enablePrettyUrl' => true,
    'showScriptName' => false,
    'rules' => [
        // Api
        [
            'class' => 'yii\rest\UrlRule',
            'prefix' => 'api', 
            'controller' => ['v1/page']
        ],
    ],
];

Re: Rest API не работает запрос вида /v1/pages/1

Добавлено: 2020.01.15, 23:10
Diakon
К сожаление не помогло :(

Re: Rest API не работает запрос вида /v1/pages/1

Добавлено: 2020.01.15, 23:19
yiiliveext
Diakon писал(а):
2020.01.15, 23:10
К сожаление не помогло :(
В конфиге алиас прописали?

Код: Выделить всё

'aliases' => [
    '@api' => dirname(dirname(__DIR__)) . '/api',
],
По умолчанию во множественном числе
api.sitename.ru/api/v1/pages/1
api.sitename.ru/api/v1/pages
или уберите префикс,

Код: Выделить всё

return [
    'enablePrettyUrl' => true,
    'showScriptName' => false,
    'rules' => [
        // Api
        [
            'class' => 'yii\rest\UrlRule',
            'controller' => ['v1/page']
        ],
    ],
];
тогда будет
api.sitename.ru/v1/pages/1
api.sitename.ru/v1/pages

Re: Rest API не работает запрос вида /v1/pages/1

Добавлено: 2020.01.15, 23:24
Diakon
yiiliveext писал(а):
2020.01.15, 23:19
Diakon писал(а):
2020.01.15, 23:10
К сожаление не помогло :(
В конфиге алиас прописали?

Код: Выделить всё

'aliases' => [
    '@api' => dirname(dirname(__DIR__)) . '/api',
],
По умолчанию во множественном числе
api.sitename.ru/api/v1/pages/1
api.sitename.ru/api/v1/pages
или уберите префикс,

Код: Выделить всё

return [
    'enablePrettyUrl' => true,
    'showScriptName' => false,
    'rules' => [
        // Api
        [
            'class' => 'yii\rest\UrlRule',
            'controller' => ['v1/page']
        ],
    ],
];
тогда будет
api.sitename.ru/v1/pages/1
api.sitename.ru/v1/pages
Сейчас попробую, но пока вот такое решение нашел
Вот такое дало результат:

Код: Выделить всё

return [
    'enablePrettyUrl' => true,
    'enableStrictParsing' => true,
    'showScriptName' => false,
    'rules' => [
        // Api
        [
            'class' => 'yii\rest\UrlRule',
            'prefix' => 'api',
            'controller' => 'v1/page',
            'tokens' => [
                '{id}' => '<id:\\d+>'
            ]
        ],
    ],
];
Правда запрос надо делать вида /api/v1/pages/1

Re: Rest API не работает запрос вида /v1/pages/1

Добавлено: 2020.01.15, 23:26
yiiliveext
Там по дефолту tokens есть

Код: Выделить всё

$tokens = [
        '{id}' => '<id:\\d[\\d,]*>',
    ];