Mat*_*Mat 4 php rest routing yii yii2
我正在尝试将 Yii 2 路由用于 REST API。
按照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'
],
],
]
Run Code Online (Sandbox Code Playgroud)
这样的规则定义:
现在,我的用户有游戏。所以我想要网址:
我尝试像这样定义我的新入口点(没有成功):
'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',
]
]
]
Run Code Online (Sandbox Code Playgroud)
这个定义似乎是错误的,因为我收到了一个 404 Page not found 错误。我应该如何定义我的新 url 路由?我想对我的定义使用等效的格式,扩展 'yii\rest\UrlRule'
我不确定这是否可能,教程没有提到这种情况。
所以我想出了如何使用更复杂的规则。
先说解,再解释。
这是解决方案:
'rules' => [
... previous rules ...,
[
'class' => 'yii\rest\UrlRule',
'controller' => 'game',
'prefix' => '/users/<userid:\\d+>',
'tokens' => [
'{gameid}' => '<gameid:\\d+>',
],
'patterns' => [
'GET,HEAD' => 'index',
'GET,HEAD {gameid}' => 'view',
]
]
]
Run Code Online (Sandbox Code Playgroud)
现在解释:
也不要忘记复数规则!“游戏”是单数”但有效的网址将是
希望它会有所帮助。