iam使用zend框架构建REST Web服务,我正在使用模块来分离我的api版本,正如我所提到的here
Ex:“applications / modules / v1 / controllers”,“applications / modules / v2 / controllers”具有不同的操作和功能集。我在application.ini中提到了我的默认模块“v1”
我正在使用上下文切换和正则表达式路由,正如我在我接受的解决方案中提到here:
$router->addRoute(
'route1',
new Zend_Controller_Router_Route_Regex(
'api/([^-]*)/([^-]*)\.([^-]*)',
array(
'controller' => 'index',
'action' => 'index'),
array(
1 => 'module',
2 => 'controller',
3 => 'format'
)
));
这是我的网址:http://localhost/api/v1/tags.xml
“v1”表示模块。现在,进入上下文切换,如果url有v1,它将转到v1模块的TagsController。但是如果url中的模块是v2,我会收到错误,例如:
请求的网址 /pt/public/index.php/api/v2/tags.xml 在这台服务器上找不到。
我无法理解为什么会爆炸。是因为我把默认模块设为v1吗?我无法根据网址更改模块。
这是我的目录树:
答案 0 :(得分:3)
我的天啊......我已经找到了解决方案...... v2模块中的控制器类名必须是“V2_TagsController”,而不仅仅是“TagsController”。感谢上帝,现在正在工作:) 请参阅以下控制器的类名称:
- application
- modules
- v1
- controllers
- TagsController.php (class TagsController)
- v2
- controllers
- TagsController.php (class V2_TagsController)
- library