2010-02-01 91 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

相關問題