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));
}

request を試すと 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 をこれらのパターンと照合し、最初に一致したものをそれ以上の処理なしで使用します。

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 に答える