0

我正在尝试使用 Laravel 创建一个 RESTful API。

在我的routes.php

Route::get('/accounts/(:any?)', array('as'=>'account_index', 'uses'=>'accounts@index'));

我的控制器:

class Accounts_Controller extends Base_Controller {
public $restful = true;

public function get_index($id = null) {
    if(!$id)
        return Response::json(Account::all());
    return Response::json(Account::find($id));
}

当我尝试任何请求时,我都会收到 404 响应accounts/##,但accounts效果很好。当我将路线更改为不accounts一样的东西时:

Route::get('/accts/(:any?)'

我的路由按预期工作,并且在发送到的请求之上accounts仍然可以正常工作。是因为我正在使用get_index我的函数名称,所以它恢复为使用标准http://localhost/controller/method/arguments

编辑我有控制器被自动检测:

Route::controller(Controller::detect());
4

1 回答 1

4

定义路由时,定义这些路由的顺序很重要。Laravel 使用正则表达式将请求的 URI 与这些模式进行匹配,第一个匹配的 URI 无需进一步处理即可使用。

Route::controller('accounts')有效匹配accounts/(:any?)/(:any?)/(:any?)等。如果您要测试 url,accounts/index/12您将得到预期的结果。

Route::get('/accounts/(:any?)', array('as'=>'account_index', 'uses'=>'accounts@index'));
Route::controller( Controller::detect() );

希望这可以帮助。

于 2013-01-14T20:51:12.973 回答