2013-03-13 41 views
0

我在Laravel 3使用控制器建立一個REST API,我想實現如下結構:重新排序的方法和途徑Laravel參數

/api/controller/{param}/method/{optional param} 

目前,我個人的路線設立每一種方法,這似乎是一個繁瑣的解決方案:

Route::any('api/ControllerA/(:any)/MethodA/(:any?)','[email protected]'); 
Route::any('api/ControllerA/(:any)/MethodB/(:any?)','[email protected]'); 
// etc. 
Route::any('api/ControllerB/(:any)/MethodA/(:any?)','[email protected]'); 
// etc. 

和結束時,一個捕獲所有處理無效呼叫:

Route::any('api/(:all)',function(){ 
    // return invalid call 404 response 
}); 

這工作得很好,但我無法想象這是最佳解決方案。我可能會考慮做類似this post suggests的事情,但我覺得這會導致一些龐大的API控制器。有什麼我失蹤?

回答

1

目前Laravel 3不支持像controller/{param}/method/{param}這樣的網址,而無需手動定義它們。 Laravel 4支持該功能,但僅限默認的機智路由(索引,顯示,更新,刪除等)。您無法定義自定義操作。

我建議你現在堅持你的方法。這就是我們在Laravel 3上所做的事情。如果你真的不喜歡這個,你可以用你自己的實現來擴展\Laravel\Routing\Router

+0

好吧,我會堅持下去。它有點麻煩,但至少我可以看到我在一個地方明確列出的所有可能的呼叫。 – enjayem 2013-03-13 18:40:06

+0

順便說一句,你可以創建一個基礎'API_Controller'並擴展它。在那個控制器上,你可以處理特定的邏輯,例如返回404 json。看看'Base_Controller :: __ call'是一種靈感。 – vFragosop 2013-03-13 18:42:45