2

先週 Laravel 3 を使い始め、新しい 4 リリースを見つけたので、今変換しようとしています。

特定のコントローラー メソッドに配信したい多数のルートがあります。つまり、「/api/v1/owners/3/dogs/1 または /api/v1/owners/3」で「myresourcecontroller@processRequest」を実行します

Laravel 3では、これを使用できました:(注*ワイルドカード)

Route::any('api/v1/owners*', 'owners@processRequest'); // Process tags resource endpoints

ドキュメントからこの例を見つけましたが、エラーが発生します。NotFoundHttpException が発生します。

//[Pattern Based Filters](http://laravel.com/docs/routing#route-filters)
Route::filter('admin', function()
{
    //
});
Route::when('admin/*', 'admin');

私が間違っているのかわかりませんか?これを行う別の方法はありますか?

Laravel 4 の安静なコントローラーは使用したくありません。完全な安静な設計に準拠していないように見えるからです。つまり、URL に動詞はありません。

私はすべての処理を記述しましたが、それにルーティングできるようにする必要があります。POST /api/v1/owners または /api/v1/owners/3/dogs で新しいレコードを作成できるようにする必要があります。/api/v1/owners/create を使用できません。

すべてのエンドポイントのルートを作成する必要がないようにしています。つまり、

Route::any('api/v1/owners/{owner_id}', 'owners@processRequest');
Route::any('api/v1/owners/{owner_id}/dogs/{dog_id}', 'owners@processRequest');

助けてくれてありがとう

4

2 に答える 2

3

API を構築する際に優れた資産となるため、機知に富んだコントローラーを利用する必要があります。説明したエンドポイントは、リソース コントローラーとネストされたリソース コントローラーを使用して実現できます。

Route::resource('owners', 'OwnersController');
Route::resource('owners.dogs', 'OwnersDogsController');

で所有者を作成し、 で所有者にPOST localhost/owners犬を作成できますPOST localhost/owners/3/dogs

これらのルートをルート グループにラップして、api/v1プレフィックスを取得できます。

Route::group(['prefix' => 'api/v1'], function()
{
    Route::resource('owners', 'OwnersController');
    Route::resource('owners.dogs', 'OwnersDogsController');
});
于 2013-06-06T00:21:23.087 に答える
-1

Haven't used Laravel myself, but try any('api/v1/owners/*', (note slash before asterisk) as in the example.

于 2013-06-05T18:23:35.777 に答える