我正在尝试使用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'
],
],
]
这样的规则定义:
- GET /用户(列出用户)
- GET /users/123(显示用户123详细信息)
现在,我的用户有游戏。所以我想有网址:
- GET /用户/123/游戏(列出用户123的游戏)
- GET /用户/123/游戏/864(用户123的游戏864的细节-诸如他的分数)
我试着这样定义我的新切入点(没有成功):
'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页面未找到错误。我应该如何定义我的新网址路由?我想使用一个等效的格式为我的定义,扩展'yii\rest\UrlRule'
我不确定这是否是可能的,教程没有提到这种情况。
4条答案
按热度按时间jhkqcmku1#
所以我想出了如何使用更复杂的规则。
首先是解决方案,然后是解释。
解决方案如下:
现在解释一下:
希望能有所帮助。
0dxa2lsx2#
我认为有一个简单的解决方案,请尝试这个:
piok6c0g3#
只使用yii2-nested-rest
它为Yii2框架中的多对多关系提供REST API。
希望评论会使魔术更容易理解:
],
ghhkc1vu4#
获取xx.com/v2/publication/12/p/34
行动中