Я пытаюсь использовать маршрутизацию Yii 2 для REST API.Yii2 route используя yii rest UrlRule с несколькими параметрами
После урока в http://www.yiiframework.com/doc-2.0/guide-rest-routing.html, я уже определился (с успехом) много правил для API точки входа, как так:
'urlManager' => [
'enablePrettyUrl' => true,
'enableStrictParsing' => true,
'showScriptName' => false,
'rules' => [
[
'class' => 'yii\rest\UrlRule',
'controller' => 'user'
],
],
]
Такое правило определяет:
- GET/пользователей (список пользователей)
- GET/пользователи/123 (показать подробно пользователя 123)
Теперь у моих пользователей есть игры. Так что я хотел бы иметь URLs:
- GET/пользователей/123/игры (список игр пользователя 123)
- GET/пользователей/123/Игры/864 (подробности игры 864 для пользователей 123 - такие, как его оценка)
Я попытался определение моей новой точки входа (withhout успеха) как так:
'rules' => [
... previous rules ...,
[
'class' => 'yii\rest\UrlRule',
'controller' => [
'game'
],
'tokens' => [
'{userid}' => '<userid:\\d>',
'{gameid}' => '<gameid:\\d>',
],
'patterns' => [
'GET,HEAD /users/{userid}/games' => 'index',
'GET,HEAD /users/{userid}/games/{gameid}' => 'view',
]
]
]
Это определение кажется неправильным, потому что я получаю 404 страницы не найдена ошибку в. Как определить новые маршруты URL? Я хотел бы использовать эквивалентный формат для моих определений, расширяя 'yii \ rest \ UrlRule'
Я не уверен, что это даже возможно, в учебнике, не упоминающем этот случай.
И текущая версия yii2-вложенным покоя не работает с PHP 7.2, поскольку генерирует ошибку «Не удается использовать юй \\ базу \\ Object as Object, потому что «Object» - это специальное имя класса ». Вы должны переименовать Object в BaseObject в «vendor/tunecino/yii2-nested-rest/src/UrlRule.php» всюду. –