【问题标题】:Reorder Methods and Parameters in Laravel Routes重新排序 Laravel 路由中的方法和参数
【发布时间】:2013-02-28 20:34:20
【问题描述】:

我正在使用 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
});

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

【问题讨论】:

    标签: php routes laravel laravel-3


    【解决方案1】:

    目前 Laravel 3 不支持像 controller/{param}/method/{param} 这样的 url 而无需手动定义它们。 Laravel 4 支持,但仅适用于默认资源路由(索引、显示、更新、删除等)。您不能定义自定义操作。

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

    【讨论】:

    • 好吧,我会坚持下去的。它有点麻烦,但至少我可以在一个地方明确列出所有可能的调用。
    • 顺便说一句,您可以创建一个基础 API_Controller 并对其进行扩展。在该控制器上,您可以处理特定于 api 的逻辑,例如返回 404 json。看看Base_Controller::__call 作为灵感。
    猜你喜欢
    • 2016-03-05
    • 2016-01-17
    • 2014-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多