Страница 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/page
s/1
Re: Rest API не работает запрос вида /v1/pages/1
Добавлено: 2020.01.15, 23:26
yiiliveext
Там по дефолту tokens есть
Код: Выделить всё
$tokens = [
'{id}' => '<id:\\d[\\d,]*>',
];