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

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Diakon
Сообщения: 18
Зарегистрирован: 2015.07.02, 18:12

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

Сообщение 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
Пожалуйста, подскажите, что не так
yiiliveext
Сообщения: 910
Зарегистрирован: 2019.08.13, 01:49

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

Сообщение yiiliveext »

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

return [
    'enablePrettyUrl' => true,
    'showScriptName' => false,
    'rules' => [
        // Api
        [
            'class' => 'yii\rest\UrlRule',
            'prefix' => 'api', 
            'controller' => ['v1/page']
        ],
    ],
];
Diakon
Сообщения: 18
Зарегистрирован: 2015.07.02, 18:12

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

Сообщение Diakon »

К сожаление не помогло :(
Последний раз редактировалось Diakon 2020.01.15, 23:23, всего редактировалось 3 раза.
yiiliveext
Сообщения: 910
Зарегистрирован: 2019.08.13, 01:49

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

Сообщение 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
Diakon
Сообщения: 18
Зарегистрирован: 2015.07.02, 18:12

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

Сообщение 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
yiiliveext
Сообщения: 910
Зарегистрирован: 2019.08.13, 01:49

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

Сообщение yiiliveext »

Там по дефолту tokens есть

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

$tokens = [
        '{id}' => '<id:\\d[\\d,]*>',
    ];
Ответить