用于RESTfull API的YII URLManager
尝试使用yii开发restfullapi(这是第一个使用yii的项目) 在让URLManager正确路由调用时遇到问题:用于RESTfull API的YII URLManager,yii,url-routing,Yii,Url Routing,尝试使用yii开发restfullapi(这是第一个使用yii的项目) 在让URLManager正确路由调用时遇到问题: 'urlManager' => array( 'urlFormat' => 'path', 'showScriptName' => false, 'caseSensitive' => false, 'rules' => array( 'api/<co
'urlManager' => array(
'urlFormat' => 'path',
'showScriptName' => false,
'caseSensitive' => false,
'rules' => array(
'api/<controller>' => array('api/<controller>/list', 'verb' => 'GET'),
'api/<controller>' => array('api/<controller>/create', 'verb' => 'POST'),
),
),
每当我删除其中一条规则时,它都会起作用,但当我同时放入这两条规则时,它们都不起作用,我会得到异常
exception.CHttpException.404
exception 'CHttpException' with message 'Unable to resolve the request
"tezt".' in /yii-1.1.10/web/CWebApplication.php:280
这两天来一直在我的头上砰砰作响。可能在web上看到了URLManager上的所有示例和教程(尽管找不到对规则的直接和完整的解释)。但是,没有快乐
我做错什么了吗?这可能是我的盒子设置吗 试试这个
'api/<controller:\w+>' => array('api/<controller>/list', 'verb' => 'GET'),
'api/'=>数组('api//list','verb'=>'GET'),
api是一个模块吗?我尝试了这个,它成功了:
'rules'=>array(
//API URLs
array('api/<controller>/index', 'pattern'=>'api/<controller:\w+>', 'verb'=>'GET'),
array('api/<controller>/create', 'pattern'=>'api/<controller:\w+>', 'verb'=>'POST'),
array('api/<controller>/view', 'pattern'=>'api/<controller:\w+>/<id:\d+>', 'verb'=>'GET'),
array('api/<controller>/update', 'pattern'=>'api/<controller:\w+>/<id:\d+>', 'verb'=>'PUT, POST'),
array('api/<controller>/delete', 'pattern'=>'api/<controller:\w+>/<id:\d+>', 'verb'=>'DELETE'),
//Other URLs
'<controller:\w+>/<id:\d+>'=>'<controller>/view',
'<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
'<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
),
在REST客户机中,您必须指定控制器名称,即使是默认控制器
我正在使用Yii 1.1.10,但我认为Yii从1.1.7开始就支持RESTful URL。对于其他偶然发现这一点的人来说,它不起作用,因为规则是使用相同的键声明的,所以后一个规则覆盖了前一个规则 将来,在规则配置数组中声明模式:
array(
'route',
'pattern' =>'somePattern',
'verb' =>'...',
),
array(
'another/route',
'pattern' =>'anotherPattern',
'verb' =>'...',
),
'api'=>array('defaultController' => 'default',),
array(
'route',
'pattern' =>'somePattern',
'verb' =>'...',
),
array(
'another/route',
'pattern' =>'anotherPattern',
'verb' =>'...',
),