0

Laravel3のコントローラーを使用してRESTAPIを構築していますが、次の構造を実現したいと考えています。

/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コントローラーにつながると思います。足りないものはありますか?

4

1 に答える 1

1

現在、Laravel 3はcontroller/{param}/method/{param}、手動で定義しない場合のようなURLをサポートしていません。Laravel 4はそれをサポートしていますが、デフォルトのリソースフルルート(インデックス、表示、更新、削除など)に対してのみサポートしています。カスタムアクションを定義することはできません。

今のところ、あなたのアプローチに固執することをお勧めします。それは私たちがLaravel3で行っていることです。それが本当に嫌いな場合は\Laravel\Routing\Router、独自の実装で拡張することができます。

于 2013-03-13T18:35:11.797 に答える