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


Reorder Methods and Parameters in Laravel Routes

我正在使用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.

,最后是一个处理无效调用的全集:

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

这工作得很好,但我不能想象这是最优的解决方案。我可能会考虑做一些这篇文章建议的事情,但我觉得这会导致一些笨重的API控制器。我是不是漏掉了什么?

目前Laravel 3不支持像controller/{param}/method/{param}这样的url,除非手动定义它们。Laravel 4支持这个功能,但只支持默认的资源路由(index、show、update、delete等)。

我建议你现在坚持你的方法。这也是我们在《Laravel 3》中所做的。如果您真的不喜欢这样,您可以用自己的实现扩展'Laravel'Routing'Router