2010-02-01 88 views
0

这是我的具体问题。我想创建一个api级别,然后可以选择使用哪种方法。例如:Zend Framework - 如何在没有模块的情况下创建层次结构?

test.com/api/rest

test.com/api/xmlprc

目前我有API映射到一个模块的目录。然后,我设置一条路线,使其成为休息路线。 test.com/api是一个休息路线,但我宁愿让它成为test.com/api/rest。这将允许我稍后添加其他人。

在bootstrap.php中:

 $front = Zend_Controller_Front::getInstance(); 
    $router = $front->getRouter(); 
    $route = new Zend_Controller_Router_Route(
'api/:module/:controller/:id/*', 
array('module' =>'default') 

);

$ router-> addRoute('api',$ route);

$ restRoute = new Zend_Rest_Route($ front,array(),array( 'rest' )); $ router-> addRoute('rest',$ restRoute);

return $ router;

在的application.ini:

resources.frontController.moduleDirectory = APPLICATION_PATH "/modules" 

我知道这将涉及的路线,但有时我发现Zend框架文档,有点难以跟随。

当我去test.com/rest/controller/它的工作原理是如何,但如果我去test.com/api/rest/它告诉我,我的模块是API和控制器是休息。

回答

0

你可能实际上想要做一些类似于api /:controller /:action.json或api /:controller /:action.xml(我见过很多API都这样做,例如:Twitter)。

要做到这一点,你可以做这样的事情:

$front = Zend_Controller_Front::getInstance(); 
$router = $front->getRouter(); // returns a rewrite router by default 
$router->addRoute(
      'json_request', 
      new Zend_Controller_Router_Route_Regex(
              '([^-]*)/([^-]*)/([^-]*)\.json', 
              array(
               'controller' => 'index', 
               'action'  => 'index', 
               'request_type' => 'json'), 
              array(
               1 => 'module', 
               2 => 'controller', 
               3 => 'action' 
              ) 
     )); 

然后,只需检查您的参数“请求类型”,并会根据您有什么要求。 您应该根据您的请求更改您的布局以引用JSON或XML。

你也需要一个API模块。

注意:请注意,模块的引导程序目前已添加到所有模块中,因此您可以在所有模块中运行此路径。我目前正在检查一种方法来解决这个问题,所以不能告诉你如何去做。

希望它有帮助!

0

你的原始线是这样的。

$restRoute = new Zend_Rest_Route($front, array(), array('rest')); 

要启用Zend_Rest_Route特定控制器,添加控制器名称的数组,因为每个模块阵列元素的值。

$restRoute = new Zend_Rest_Route($front, array(), array('api') => array('rest')); 

参考 http://framework.zend.com/manual/en/zend.controller.router.html

我希望这可以帮助。

+0

我其实想要api/rest /:controller来休息。所以api/rest/user和api/rest/differentresource都是REST。我想在前面有一个虚拟api文件夹,以便我可以提供其他服务。 – Joshua 2010-02-01 19:52:36

相关问题