在Laravel路由中重新排序方法和参数

时间:2013-03-13 03:05:28

标签: php routes laravel laravel-3

我正在使用Laravel 3中的控制器构建REST API,我想实现以下结构:

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

目前,我为每种方法设置了单独的路线,这似乎是一个繁琐的解决方案:

Route::any('api/ControllerA/(:any)/MethodA/(:any?)','api.ControllerA@MethodA');
Route::any('api/ControllerA/(:any)/MethodB/(:any?)','api.ControllerA@MethodB');
// etc.
Route::any('api/ControllerB/(:any)/MethodA/(:any?)','api.ControllerB@MethodA');
// etc.

最后是一个处理无效调用的catch-all:

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

这很好用,但我无法想象这是最佳解决方案。我可能会考虑做this post suggests这样的事情,但我觉得这会导致一些庞大的API控制器。有什么我想念的吗?

1 个答案:

答案 0 :(得分:1)

目前,Laravel 3不支持controller/{param}/method/{param}等网址而不支持手动定义。 Laravel 4仅支持默认的资源路由(索引,显示,更新,删除等)。您无法定义自定义操作。

我建议你现在坚持你的方法。这就是我们在Laravel 3上所做的。如果你真的不喜欢它,你可以用你自己的实现扩展\Laravel\Routing\Router